网络上传输数据大部分都需要压缩数据后传递,常见的有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压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...
标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...
总的来说,理解和实现zip解压缩算法涉及到数据压缩理论、C语言编程、二进制数据解析以及错误检查等多个IT领域的知识。这个过程不仅可以加深对数据压缩原理的理解,也有助于提升C语言编程能力。对于希望在文件处理、...
本篇文章将详细介绍如何在UCOS系统中移植ZLIB库以及实现ZIP文件的解压缩。 首先,ZLIB是一个开源的压缩库,它提供了数据的无损压缩和解压缩功能,常用于GIF、PNG等文件格式。移植ZLIB到UCOS涉及到以下几个关键步骤...
在Delphi编程环境中,开发人员经常需要处理文件的压缩与解压缩操作,这在数据传输、备份或存储优化等方面非常常见。本主题将详细介绍如何利用XE4自带的System.Zip单元来实现这一功能,并探讨如何在Delphi7中调用这些...
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文件格式的处理。ZIP是一种广泛使用的文件归档格式,它允许将多个文件和目录打包成一个...
总的来说,这个“zip基于c/c++的压缩解压缩程序”项目展示了C++在处理文件压缩和解压缩任务上的能力,同时也提供了学习和研究底层压缩算法及文件操作的好机会。对于希望深入理解文件系统、I/O操作以及压缩技术的...
本文将详细介绍如何使用CZip和CUnzip类来处理文件的压缩与解压缩任务。 首先,我们需要了解CZip和CUnzip类的基本概念。CZip类提供了创建、打开、添加、删除和提取ZIP文件的功能,而CUnzip类则负责从ZIP文件中提取...
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
Zip文件格式采用了一种叫做DEFLATE的混合压缩方法,结合了LZ77(一种滑动窗口的无损数据压缩算法)和霍夫曼编码。DEFLATE首先通过查找重复的数据模式并用更短的代码来表示,然后应用霍夫曼编码进一步优化,使得文件...
4. **gzip**:gzip是另一种常用的压缩格式,主要用于HTTP传输中的数据压缩。PHP的`gzencode()`和`gzdecode()`函数可以分别用于数据的压缩和解压缩。`gzcompress()`和`gzuncompress()`则用于文件级别的操作。 5. **...
- 解压缩时,同样需要创建一个ZipArchive对象,但这次是以读取模式打开ZIP文件,如`using (var archive = ZipFile.OpenRead("output.zip"))`。 - 对于ZIP文件中的每一个条目(ZipArchiveEntry),我们可以打开它的...
反过来,解压缩时,会先由`libarchive`或`minizip`读取ZIP文件结构,再调用zlib的解压缩函数。 在提供的压缩包子文件列表中,我们看到只有一个名为"testzip"的文件。这可能是一个测试用例或者示例代码,用于演示...
接下来,我们来看看如何使用ICSharpCode.SharpZipLib.dll在C#中解压缩ZIP文件: 1. 引入库:首先,你需要将ICSharpCode.SharpZipLib.dll添加到你的项目中。在Visual Studio中,右键点击项目,选择“管理NuGet程序包...
本压缩包"各种zip压缩解压缩源码集合.zip"显然包含了一系列与Zip压缩算法相关的源代码,这对于理解其工作原理、进行二次开发或者优化现有压缩库非常有价值。下面,我们将深入探讨Zip压缩算法及相关编程知识。 1. **...
总的来说,这份WinCE ZIP压缩解压缩源代码为开发者提供了一个实用的工具,通过研究和理解源代码,不仅可以掌握ZIP文件处理的基本原理,还可以了解到在有限资源环境下C++编程的一些技巧。同时,这也是一个很好的学习...
总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...
解压缩ZIP算法是数据存储和传输的重要组成部分,它的高效性和通用性使其在IT行业中不可或缺。了解ZIP文件的结构、压缩原理和解压缩过程,有助于我们更好地理解和使用这种格式,解决相关问题。无论是开发人员还是普通...
解压缩ZIP文件同样简单,使用`ExtractToDirectory`方法即可: ```csharp public static void ExtractZipToDirectory(string sourceArchiveFileName, string destinationDirectoryName) { ZipFile....