Java 解压缩 Zip文件(在李兴华老师基础上优化)

简介: Java 解压缩 Zip文件(在李兴华老师基础上优化)
1. 
import java.io.File;
2. import java.io.FileInputStream;
3. import java.io.FileOutputStream;
4. import java.io.IOException;
5. import java.io.InputStream;
6. import java.io.OutputStream;
7. import java.util.zip.ZipEntry;
8. import java.util.zip.ZipFile;
9. import java.util.zip.ZipInputStream;
10. 
11. 
12. 
13. 
14. public class UnZipDemo
15. {
16. 
17.   public static void main(String [] args) throws IOException
18.   {
19.     File file = new File("F:"+File.separator+"SWT_Designer.zip");//要解压的文件
20. 
21.     File outFile = null;
22.     ZipFile zipFile = new ZipFile(file);//创建压缩文件对象
23.     ZipInputStream zi = null;
24. 
25.     InputStream is = null;
26.     OutputStream os = null;
27.     ZipEntry entry = null ; // 每一个压缩实体
28. 
29.     zi = new ZipInputStream(new FileInputStream(file));// 实例化ZIpInputStream
30. 
31.     String dir = file.getName().substring(0, file.getName().length()-3);//解压后的文件夹名和压缩文件名(不加拓展名)相同
32. 
33.     while((entry=zi.getNextEntry())!=null)//得到一个压缩实体
34.     {
35.       System.out.println("解压缩" + entry.getName() + "文件。") ;
36.       outFile = new File("F:"+ File.separator  + dir+ File.separator + entry.getName()) ; // 定义输出的文件路径
37. 
38.       if(!outFile.getParentFile().exists())     
39.         {
40.           outFile.getParentFile().mkdir();
41.         }
42. 
43.       if(!outFile.exists())     
44.         {
45.         if(outFile.isDirectory()||entry.isDirectory())
46.         {
47.           outFile.mkdir();
48.         }else{
49.           outFile.createNewFile();
50.         }
51.         }
52. 
53. 
54. 
55. 
56. 
57.       is = zipFile.getInputStream(entry) ;  // 得到每一个实体的输入流
58. 
59. 
60.     if(outFile.isDirectory())
61.     {
62.       continue;
63.     }else
64.     {
65.       os = new FileOutputStream(outFile);
66.         int len = 0;
67.         byte [] buf = new byte[1024*10];
68.         while((len = is.read(buf))!=-1) 
69.         {
70.           os.write(buf, 0, len);
71.         }
72.           is.close();
73.           os.close();
74.           entry.clone();
75. 
76. 
77. 
78.       }
79. 
80. 
81. 
82.     }
83.     zi.close();
84. 
85.   }
86. }

4.png

5.png


相关文章
|
21天前
|
存储 缓存 算法
优化 Java 后台代码的关键要点
【4月更文挑战第5天】本文探讨了优化 Java 后台代码的关键点,包括选用合适的数据结构与算法、减少不必要的对象创建、利用 Java 8 新特性、并发与多线程处理、数据库和缓存优化、代码分析与性能调优、避免阻塞调用、JVM 调优以及精简第三方库。通过这些方法,开发者可以提高系统性能、降低资源消耗,提升用户体验并减少运营成本。
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
23天前
|
Java
深入理解Java并发编程:线程池的应用与优化
【4月更文挑战第3天】 在Java并发编程中,线程池是一种重要的资源管理工具,它能有效地控制和管理线程的数量,提高系统性能。本文将深入探讨Java线程池的工作原理、应用场景以及优化策略,帮助读者更好地理解和应用线程池。
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
消息中间件 缓存 NoSQL
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
|
9天前
|
Java 开发者
Java中多线程并发控制的实现与优化
【4月更文挑战第17天】 在现代软件开发中,多线程编程已成为提升应用性能和响应能力的关键手段。特别是在Java语言中,由于其平台无关性和强大的运行时环境,多线程技术的应用尤为广泛。本文将深入探讨Java多线程的并发控制机制,包括基本的同步方法、死锁问题以及高级并发工具如java.util.concurrent包的使用。通过分析多线程环境下的竞态条件、资源争夺和线程协调问题,我们提出了一系列实现和优化策略,旨在帮助开发者构建更加健壮、高效的多线程应用。
7 0
|
10天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
12天前
|
Java 程序员 编译器
Java中的线程同步与锁优化策略
【4月更文挑战第14天】在多线程编程中,线程同步是确保数据一致性和程序正确性的关键。Java提供了多种机制来实现线程同步,其中最常用的是synchronized关键字和Lock接口。本文将深入探讨Java中的线程同步问题,并分析如何通过锁优化策略提高程序性能。我们将首先介绍线程同步的基本概念,然后详细讨论synchronized和Lock的使用及优缺点,最后探讨一些锁优化技巧,如锁粗化、锁消除和读写锁等。
|
13天前
|
Java 编译器
Java并发编程中的锁优化策略
【4月更文挑战第13天】 在Java并发编程中,锁是一种常见的同步机制,用于保证多个线程之间的数据一致性。然而,不当的锁使用可能导致性能下降,甚至死锁。本文将探讨Java并发编程中的锁优化策略,包括锁粗化、锁消除、锁降级等方法,以提高程序的执行效率。
13 4
|
19天前
|
设计模式 缓存 安全
分析设计模式对Java应用性能的影响,并提供优化策略
【4月更文挑战第7天】本文分析了7种常见设计模式对Java应用性能的影响及优化策略:单例模式可采用双重检查锁定、枚举实现或对象池优化;工厂方法和抽象工厂模式可通过对象池和缓存减少对象创建开销;建造者模式应减少构建步骤,简化复杂对象;原型模式优化克隆方法或使用序列化提高复制效率;适配器模式尽量减少使用,或合并多个适配器;观察者模式限制观察者数量并使用异步通知。设计模式需根据应用场景谨慎选用,兼顾代码质量和性能。