- 浏览: 68904 次
- 性别:
- 来自: 上海
文章分类
最新评论
今天写了个用java压缩的功能,可以实现对文件和目录的压缩。
由于java.util.zip.ZipOutputStream有中文乱码问题,所以采用org.apache.tools.zip.ZipOutputStream。
以下是代码:
Java代码
1. package net.szh.zip;
2.
3. import java.io.BufferedInputStream;
4. import java.io.File;
5. import java.io.FileInputStream;
6. import java.io.FileOutputStream;
7. import java.util.zip.CRC32;
8. import java.util.zip.CheckedOutputStream;
9.
10. import org.apache.tools.zip.ZipEntry;
11. import org.apache.tools.zip.ZipOutputStream;
12.
13. public class ZipCompressor {
14. static final int BUFFER = 8192;
15.
16. private File zipFile;
17.
18. public ZipCompressor(String pathName) {
19. zipFile = new File(pathName);
20. }
21.
22. public void compress(String srcPathName) {
23. File file = new File(srcPathName);
24. if (!file.exists())
25. throw new RuntimeException(srcPathName + "不存在!");
26. try {
27. FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
28. CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,
29. new CRC32());
30. ZipOutputStream out = new ZipOutputStream(cos);
31. String basedir = "";
32. compress(file, out, basedir);
33. out.close();
34. } catch (Exception e) {
35. throw new RuntimeException(e);
36. }
37. }
38.
39. private void compress(File file, ZipOutputStream out, String basedir) {
40. /* 判断是目录还是文件 */
41. if (file.isDirectory()) {
42. System.out.println("压缩:" + basedir + file.getName());
43. this.compressDirectory(file, out, basedir);
44. } else {
45. System.out.println("压缩:" + basedir + file.getName());
46. this.compressFile(file, out, basedir);
47. }
48. }
49.
50. /** 压缩一个目录 */
51. private void compressDirectory(File dir, ZipOutputStream out, String basedir) {
52. if (!dir.exists())
53. return;
54.
55. File[] files = dir.listFiles();
56. for (int i = 0; i < files.length; i++) {
57. /* 递归 */
58. compress(files[i], out, basedir + dir.getName() + "/");
59. }
60. }
61.
62. /** 压缩一个文件 */
63. private void compressFile(File file, ZipOutputStream out, String basedir) {
64. if (!file.exists()) {
65. return;
66. }
67. try {
68. BufferedInputStream bis = new BufferedInputStream(
69. new FileInputStream(file));
70. ZipEntry entry = new ZipEntry(basedir + file.getName());
71. out.putNextEntry(entry);
72. int count;
73. byte data[] = new byte[BUFFER];
74. while ((count = bis.read(data, 0, BUFFER)) != -1) {
75. out.write(data, 0, count);
76. }
77. bis.close();
78. } catch (Exception e) {
79. throw new RuntimeException(e);
80. }
81. }
82. }
后来发现原来可以用ant中的org.apache.tools.ant.taskdefs.Zip来实现,更加简单。
Java代码
1. package net.szh.zip;
2.
3. import java.io.File;
4.
5. import org.apache.tools.ant.Project;
6. import org.apache.tools.ant.taskdefs.Zip;
7. import org.apache.tools.ant.types.FileSet;
8.
9. public class ZipCompressorByAnt {
10.
11. private File zipFile;
12.
13. public ZipCompressorByAnt(String pathName) {
14. zipFile = new File(pathName);
15. }
16.
17. public void compress(String srcPathName) {
18. File srcdir = new File(srcPathName);
19. if (!srcdir.exists())
20. throw new RuntimeException(srcPathName + "不存在!");
21.
22. Project prj = new Project();
23. Zip zip = new Zip();
24. zip.setProject(prj);
25. zip.setDestFile(zipFile);
26. FileSet fileSet = new FileSet();
27. fileSet.setProject(prj);
28. fileSet.setDir(srcdir);
29. //fileSet.setIncludes("**/*.java"); 包括哪些文件或文件夹 eg:zip.setIncludes("*.java");
30. //fileSet.setExcludes(...); 排除哪些文件或文件夹
31. zip.addFileset(fileSet);
32.
33. zip.execute();
34. }
35. }
测试一下
Java代码
1. package net.szh.zip;
2.
3. public class TestZip {
4. public static void main(String[] args) {
5. ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip");
6. zc.compress("E:\\test");
7.
8. ZipCompressorByAnt zca = new ZipCompressorByAnt("E:\\szhzipant.zip");
9. zca.compress("E:\\test");
10. }
11. }
转摘自: http://szhnet.iteye.com/blog/199059
发表评论
-
Tomcat配置远程调试端口
2016-07-26 15:35 0Tomcat配置远程调试端口 1.Linxu系统: apa ... -
获取通过body传输的postdata数据
2016-07-01 18:39 0目前基于rest风格的很多API开始使用通过body da ... -
LOG4J 配置
2015-04-01 17:44 661log4j.rootLogger = info, consol ... -
利用Java实现压缩与解压缩(zip、gzip)支持中文路径
2011-10-19 22:21 1371zip扮演着归档和压缩两个角色;gzip并不将文件归档,仅只是 ... -
安全有效的实现两星期内自动登陆功能
2011-10-19 22:02 1139自动登陆流程: 1. 保存用户信息阶段: 当用户登陆网站 ... -
基于Spring框架的Shiro配置
2011-10-15 13:37 2529一、在web.xml中添加shiro过滤器 ... -
web应用 相对路径 绝对路径 总结
2011-05-20 11:50 2877参考资料: http://www.iteye.com/topi ... -
Spring,hibernate,struts的面试笔试题(含答案)
2011-05-07 14:23 1Hibernate工作原理及为什么要用? 原 ... -
spring入门编程问题集锦
2011-05-07 14:19 10391、如何学习Spring? 你 ... -
SchemaExport工具实战(hibernate)
2011-03-05 14:57 958SchemaExport工具实战 通常我们使用生成数据库 ... -
java实现zip与unzip
2011-02-12 11:26 1147jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简 ... -
一个java处理JSON格式数据的通用类
2011-02-11 14:57 1713进入需要在项目中用java处理json格式的数据,因此封装了一 ... -
高效的Java异常处理
2011-01-20 20:37 871Java开发人员可以做出的 ... -
Java 理论与实践: 关于异常的争论
2011-01-20 20:28 659与 C++ 类似,Java 语言也 ... -
讲解Java异常
2011-01-20 14:35 757六种异常处理的陋习 ... -
jsp2.0自定义标签Tag
2011-01-13 00:56 1911在JSP2.0 中,对于自定义 ... -
Axis2部署WebService
2011-01-12 21:14 2048Axis2下提供了三种配置文件,一种是整个系统的全局配置axi ... -
高效java异常处理机制
2011-01-12 16:34 983Java 开发人员可以做 ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2010-12-20 17:42 740一、 1、启动一个WEB项 ... -
Java人民币小写转大写(小数点后只支持到分)
2010-08-02 18:04 1434package com.resource.test; imp ...
相关推荐
java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip...
用java实现文件/文件夹zip格式的压缩
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
关于Java实现文件的zip的解压缩 文本文档 虽然不多
Java实现Zip压缩文件操作的工具类 文章介绍:https://blog.csdn.net/rongbo91/article/details/117747042 (可作为Jar依赖包直接使用) 1、项目使用前,请进入rdc-bom目录下,执行mvn clean install命令 2、可...
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
使用java的zip压缩库 对文件和文件夹实现压缩
java 生成zip压缩文件 java 生成zip压缩文件
Java操作zip压缩格式的开源项目,功能强大而且使用方便,能完全满足Java操作Zip压缩文件,官方网址为:http://www.lingala.net/zip4j/ 可以下载到jar包、源码和示例,好像没有提供API文档。 不过需要使用代理访问...
java压缩文件成zip实现无乱码 内置类与jar包
zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java
上传的主要介绍的是关于JAVA程序设计实现zip的功能,希望大家借鉴一下,对自己的学习有所帮助
Java用Zip压缩多个文件实例源码
java 实现的zip存储方式压缩测试代码
使用 Java 语言实现并封装的创建 ZIP 格式的压缩文件并解压到指定目录和解压 ZIP 文件到指定目录的工具类。
包含了使用的jar包,以及一个Java类,实现了使用Java对多目录多层级的文件进行打包,以及对ZIP包进行解压缩的操作。
java 操作Zip文件(压缩、解压、加密) zip4j-1.3.2.jar ant-1.10.6.jar
java实现压缩和压缩zip格式文件的功能,网络上看到的,觉得不错上传出来,供大家一起共同分享学习。
一个用Java实现的zip压缩算法,可以递归进行压缩 包括文件夹等