`
superich2008
  • 浏览: 324334 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数据压缩解压缩(zip)

阅读更多
网络上传输数据大部分都需要压缩数据后传递,常见的有zip方式压缩/解压缩

/**  
	 * 数据压缩  
	 * @param data  
	 * @return  
	 */  
	public static byte[] dataGZip(byte[] data) 
	{   
		ByteArrayInputStream bais = null;
	    GZIPOutputStream gos = null;   
	    ByteArrayOutputStream baos = null;
	    try 
	    {   
	    	bais = new ByteArrayInputStream(data);
	        baos = new ByteArrayOutputStream();   
	        gos = new GZIPOutputStream(baos);   
	           
	        byte[] buf = new byte[1024*1024];   
	        int num;   
	        while ((num = bais.read(buf)) != -1) {   
	            gos.write(buf, 0, num);   
	        }   
	        gos.finish();   
	        gos.flush();   
	        byte[] output = baos.toByteArray();  
	        
	        return output;   
	    } catch (IOException e) 
	    {   
	    	log.error(e.getMessage(), e);
	    } finally
	    {
	    	if (null != gos)
	    	{
	    		try
				{
					gos.close();
				} catch (IOException e)
				{
				}
	    	}
	    	if (null != baos)
	    	{
	    		try
				{
					baos.close();
				} catch (IOException e)
				{
				}
	    	}
	    	if (null != bais)
	    	{
	    		try
				{
	    			bais.close();
				} catch (IOException e)
				{
				}
	    	}
	    }
	    return null;   
	}   


/**  
	 * 数据解压缩  
	 * @param data  
	 * @return  
	 */  
	public static byte[] dataUnGZip(byte[] data)
	{   
		ByteArrayInputStream bais = null;
		GZIPInputStream gis = null;
		ByteArrayOutputStream baos = null;
	    try 
	    {   
	        bais = new ByteArrayInputStream(data);   
	        gis = new GZIPInputStream(bais);   
	        baos = new ByteArrayOutputStream();   
	        byte[] buf = new byte[1024*1024];   
	        int num;   
	        while((num=gis.read(buf))!=-1)
	        {   
	            baos.write(buf, 0, num);   
	        }   
	        byte[] ret = baos.toByteArray();   
	        
	        return ret;   
	    } catch (IOException e) 
	    {   
	        log.error(e.getMessage(), e);
	    } finally
	    {
	    	if (null != baos)
	    	{
	    		try
				{
					baos.close();
				} catch (IOException e)
				{
				}   
	    	}
	    	if (null != gis)
	    	{
	    		try
				{
					gis.close();
				} catch (IOException e)
				{
				}
	    	}
	    	if (null != bais)
	    	{
	    		try
				{
					bais.close();
				} catch (Exception e)
				{
				}
	    	}
	    }
	    return null;   
	} 
分享到:
评论

相关推荐

    zip压缩解压缩

    【标题】:“zip压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...

    C++ zip解压缩压缩

    标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...

    C语言zip解压缩算法源代码

    总的来说,理解和实现zip解压缩算法涉及到数据压缩理论、C语言编程、二进制数据解析以及错误检查等多个IT领域的知识。这个过程不仅可以加深对数据压缩原理的理解,也有助于提升C语言编程能力。对于希望在文件处理、...

    ucos移植zlib和zip文件解压缩

    本篇文章将详细介绍如何在UCOS系统中移植ZLIB库以及实现ZIP文件的解压缩。 首先,ZLIB是一个开源的压缩库,它提供了数据的无损压缩和解压缩功能,常用于GIF、PNG等文件格式。移植ZLIB到UCOS涉及到以下几个关键步骤...

    Delphi实现Zip压缩/解压缩

    在Delphi编程环境中,开发人员经常需要处理文件的压缩与解压缩操作,这在数据传输、备份或存储优化等方面非常常见。本主题将详细介绍如何利用XE4自带的System.Zip单元来实现这一功能,并探讨如何在Delphi7中调用这些...

    java ZIP 解压缩

    java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...

    c/c++zip压缩解压缩

    本话题主要围绕"基于C/C++的zip压缩解压缩"进行深入探讨。 标题中的"C/C++ zip压缩解压缩"是指使用C或C++编程语言来实现对ZIP文件格式的处理。ZIP是一种广泛使用的文件归档格式,它允许将多个文件和目录打包成一个...

    zip基于c/c++的压缩解压缩程序

    总的来说,这个“zip基于c/c++的压缩解压缩程序”项目展示了C++在处理文件压缩和解压缩任务上的能力,同时也提供了学习和研究底层压缩算法及文件操作的好机会。对于希望深入理解文件系统、I/O操作以及压缩技术的...

    VC++ MFC 如何用 CZip CUnzip类压缩解压缩文件

    本文将详细介绍如何使用CZip和CUnzip类来处理文件的压缩与解压缩任务。 首先,我们需要了解CZip和CUnzip类的基本概念。CZip类提供了创建、打开、添加、删除和提取ZIP文件的功能,而CUnzip类则负责从ZIP文件中提取...

    java android zip解压缩(解决压缩中文乱码问题)

    本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...

    Zip压缩与解压缩

    Zip文件格式采用了一种叫做DEFLATE的混合压缩方法,结合了LZ77(一种滑动窗口的无损数据压缩算法)和霍夫曼编码。DEFLATE首先通过查找重复的数据模式并用更短的代码来表示,然后应用霍夫曼编码进一步优化,使得文件...

    php zip gzip tar..压缩解压缩类

    4. **gzip**:gzip是另一种常用的压缩格式,主要用于HTTP传输中的数据压缩。PHP的`gzencode()`和`gzdecode()`函数可以分别用于数据的压缩和解压缩。`gzcompress()`和`gzuncompress()`则用于文件级别的操作。 5. **...

    一个基于C#实现的数据信息ZIP压缩与解压包装类源码及例子程序

    - 解压缩时,同样需要创建一个ZipArchive对象,但这次是以读取模式打开ZIP文件,如`using (var archive = ZipFile.OpenRead("output.zip"))`。 - 对于ZIP文件中的每一个条目(ZipArchiveEntry),我们可以打开它的...

    testzip_zip压缩解压缩_

    反过来,解压缩时,会先由`libarchive`或`minizip`读取ZIP文件结构,再调用zlib的解压缩函数。 在提供的压缩包子文件列表中,我们看到只有一个名为"testzip"的文件。这可能是一个测试用例或者示例代码,用于演示...

    C# Zip解压缩文件

    接下来,我们来看看如何使用ICSharpCode.SharpZipLib.dll在C#中解压缩ZIP文件: 1. 引入库:首先,你需要将ICSharpCode.SharpZipLib.dll添加到你的项目中。在Visual Studio中,右键点击项目,选择“管理NuGet程序包...

    各种zip压缩解压缩源码集合.zip

    本压缩包"各种zip压缩解压缩源码集合.zip"显然包含了一系列与Zip压缩算法相关的源代码,这对于理解其工作原理、进行二次开发或者优化现有压缩库非常有价值。下面,我们将深入探讨Zip压缩算法及相关编程知识。 1. **...

    WinCE ZIP 压缩解压缩源代码

    总的来说,这份WinCE ZIP压缩解压缩源代码为开发者提供了一个实用的工具,通过研究和理解源代码,不仅可以掌握ZIP文件处理的基本原理,还可以了解到在有限资源环境下C++编程的一些技巧。同时,这也是一个很好的学习...

    C语言实现Zip压缩解压.rar

    总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...

    解压缩zip算法

    解压缩ZIP算法是数据存储和传输的重要组成部分,它的高效性和通用性使其在IT行业中不可或缺。了解ZIP文件的结构、压缩原理和解压缩过程,有助于我们更好地理解和使用这种格式,解决相关问题。无论是开发人员还是普通...

    zip压缩解压缩代码

    解压缩ZIP文件同样简单,使用`ExtractToDirectory`方法即可: ```csharp public static void ExtractZipToDirectory(string sourceArchiveFileName, string destinationDirectoryName) { ZipFile....

Global site tag (gtag.js) - Google Analytics