/**
* 取压缩目录内文件逐一进行压缩
* @param baseDir 需压缩目录根路径
* @param currentZipDir 需压缩目录中的目录
* @param zos 写入压缩文件的输出流
*/
private static void writeZip(String baseDir, String currentZipDir,
ZipOutputStream zos)
{
File curFile = new File(currentZipDir);
File[] fileList = curFile.listFiles();
try
{
for (int i = 0; i < fileList.length; i++)
{
File zipfile = fileList[i];
// 取得相对路径
String relativePath = getRelativePath(baseDir, zipfile);
ZipEntry zentry = new ZipEntry(relativePath);
zentry.setSize(zipfile.length());
zentry.setTime(zipfile.lastModified());
// System.out.print("ziping: " + relativePath);
// 将ZipEntry加到zos中,再写入实际的文件内容
zos.putNextEntry(zentry);
if (zipfile.isDirectory())
{
// 如果是目录,则继续递归压缩
writeZip(baseDir, zipfile.getCanonicalPath(), zos);
}
else
{
// 如果是文件,则写入其内容
InputStream is = new BufferedInputStream(
new FileInputStream(zipfile));
writeFile(is, zos);
is.close();
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
/**
* 从输入流读入的内容写入输出流
* @param in 输入流
* @param out 输出流
* @throws IOException IO异常
*/
public static void writeFile(final InputStream in, final OutputStream out)
throws IOException
{
final int diskCacheSize = 1024 * 4;
// 4K容量的数据缓冲区,因为硬盘存取是以4K一簇为单位的
final byte[] buffer = new byte[diskCacheSize];
// 开始复制数据
int readLen = 0;
while ((readLen = in.read(buffer)) > 0)
{
out.write(buffer, 0, readLen);
}
}
分享到:
相关推荐
在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...
哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩...
实际的PB压缩解压缩实现可能根据具体需求和设计有所不同,例如可能使用了特定的压缩库(如zlib或libarchive),或者采用了自定义的压缩算法。要深入了解这个话题,最好能够查看和分析提供的源代码。
在IT领域,压缩和解压缩是数据存储和传输过程...总结,压缩与解压缩是信息技术中不可或缺的部分,涉及多种算法和格式。无论是从理论学习还是实践操作,都需要深入理解和掌握这一领域的知识,以便在实际工作中灵活运用。
赫夫曼编码是一种高效的数据压缩算法,由美国...通过以上步骤,我们可以使用C语言实现赫夫曼压缩与解压缩。需要注意的是,实际编程时,还需要考虑错误处理、内存管理以及效率优化等问题,以确保程序的稳定性和性能。
**Zip压缩与解压缩** Zip是一种广泛使用的文件压缩格式,由菲尔·卡尔森在1989年开发,旨在减少文件占用的磁盘空间,提高数据传输效率。它通过使用不同的压缩算法,如DEFLATE,可以有效地缩小文件大小。在IT领域,...
在C#环境下实现哈夫曼编码的压缩与解压缩,可以帮助我们理解这一算法的工作原理,同时为文件处理提供了一个实用工具。 哈夫曼编码的核心思想是构建一棵哈夫曼树(Huffman Tree),这是一棵带权路径长度最短的二叉树...
这类工具类通常封装了与解压缩相关的复杂操作,使得开发者无需深入了解底层细节,即可完成文件的解压任务。 描述中的“java解压文件工具类、放入工程直接可用、案例、web开发、unziputil”进一步明确了这个工具类的...
### Ubuntu中的压缩与解压缩命令详解 在日常的文件管理和数据传输过程中,压缩与解压缩是非常重要的操作之一。尤其在Linux环境下,掌握这些命令对于提高工作效率有着不可忽视的作用。本文将详细介绍Ubuntu系统中...
`tar`不仅可以打包文件,还可以通过与其他工具(如gzip、bzip2等)结合使用来进行压缩或解压缩。 - **主选项**: - `c`: 创建新归档文件。 - `r`: 将文件添加到现有归档文件的末尾。 - `t`: 列出归档文件的内容...
JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...
本示例主要探讨的是如何使用C#编程语言实现文件和目录的压缩与解压缩功能。C#,作为微软开发的一种面向对象的编程语言,提供了丰富的库和API来处理这种任务。 首先,我们要知道压缩的主要目的是减小文件或数据的...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
"批量压缩解压缩.rar" 提供了这样的功能,它允许用户一次性处理多个文件或整个目录,极大地提高了效率。这一工具对于那些需要频繁处理大量文件的IT专业人员来说尤其实用,比如开发人员、系统管理员和数据分析师。 ...