java按照目录结构压缩文件夹以及文件夹内内容详解编程语言
2023-06-13 09:20:23 时间
12 private String zipFileName; // 目的地Zip文件
13 private String sourceFileName; //源文件(带压缩的文件或文件夹)
15 public ZipCompress(String zipFileName,String sourceFileName)
16 {
17 this.zipFileName=zipFileName;
18 this.sourceFileName=sourceFileName;
19 }
21 public void zip() throws Exception
22 {
23 //File zipFile = new File(zipFileName);
24 System.out.println("压缩中...");
26 //创建zip输出流
27 ZipOutputStream out = new ZipOutputStream( new FileOutputStream(zipFileName));
29 //创建缓冲输出流
30 BufferedOutputStream bos = new BufferedOutputStream(out);
32 File sourceFile = new File(sourceFileName);
34 //调用函数
35 compress(out,bos,sourceFile,sourceFile.getName());
37 bos.close();
38 out.close();
39 System.out.println("压缩完成");
41 }
43 public void compress(ZipOutputStream out,BufferedOutputStream bos,File sourceFile,String base) throws Exception
44 {
45 //如果路径为目录(文件夹)
46 if(sourceFile.isDirectory())
47 {
49 //取出文件夹中的文件(或子文件夹)
50 File[] flist = sourceFile.listFiles();
52 if(flist.length==0)//如果文件夹为空,则只需在目的地zip文件中写入一个目录进入点
53 {
54 System.out.println(base+"/");
55 out.putNextEntry( new ZipEntry(base+"/") );
56 }
57 else//如果文件夹不为空,则递归调用compress,文件夹中的每一个文件(或文件夹)进行压缩
58 {
59 for(int i=0;i flist.length;i++)
60 {
61 compress(out,bos,flist[i],base+"/"+flist[i].getName());
62 }
63 }
64 }
65 else//如果不是目录(文件夹),即为文件,则先写入目录进入点,之后将文件写入zip文件中
66 {
67 out.putNextEntry( new ZipEntry(base) );
68 FileInputStream fos = new FileInputStream(sourceFile);
69 BufferedInputStream bis = new BufferedInputStream(fos);
71 int tag;
72 System.out.println(base);
73 //将源文件写入到zip文件中
74 while((tag=bis.read())!=-1)
75 {
76 out.write(tag);
77 }
78 bis.close();
79 fos.close();
81 }
82 }
83 }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/7953.html
cjava相关文章
- java 上传文件接口_Java接口实现文件上传
- JAVA静态内部类_java静态内部类实例化
- Java 对称加密几种算法分别实现详解编程语言
- 使用POI向excel中写入图片的java代码详解编程语言
- java 检测 Java 是否运行在64bit 的JVM上详解编程语言
- java Velocity 的宏定义实例详解编程语言
- Java实现桶排序详解编程语言
- Java工具类:全角半角相互转换详解编程语言
- java合并文本文件并删除文件中重复行详解编程语言
- java操作csv文件相关代码详解编程语言
- 使用 java.awt.Graphics2D 画线详解编程语言
- Java实现倒计时代码详解编程语言
- 文件或是文件夹打包压缩成zip格式的Java代码详解编程语言
- Java实现文本按照自然段落进行切分详解编程语言
- java okhttp 发送图片详解编程语言
- Java并发编程之CountDownLatch详解编程语言
- java垃圾回收机制,以及常用的回收算法详解编程语言
- Java如何对ArrayList里的元素排序详解编程语言
- java正则表达式验证汉字详解编程语言
- java基础详解编程语言
- java中Map的遍历方式详解编程语言
- java面试常问到的技术有哪些详解编程语言
- JAVA BigDecimal的相加详解编程语言
- java获取程序执行时间详解编程语言
- MergeSort(归并排序)算法Java实现详解编程语言
- Java操作Oracle数据库:实现数据库连接与访问(java连接oracle数据库)
- java 序列化和反序列化的实现原理详解编程语言
- Java数据持久层框架 MyBatis之API学习五(Mapper XML 文件)详解编程语言
- Java多线程(三):synchronized关键字详解编程语言
- Java图片压缩详解编程语言
- LRU算法的Java实现详解编程语言
- java foreach原理详解编程语言
- Java多线程16:线程组详解编程语言
- Java多线程9:ThreadLocal源码剖析详解编程语言
- Oracle连接类详解:掌握Java中操作Oracle的核心技术!(oracle连接类)
- Java操作Redis实现数据快速存取(java访问redis)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)