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


相关文章
|
13天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
43 2
|
6天前
|
监控 算法 Java
Java虚拟机垃圾回收机制深度剖析与优化策略####
【10月更文挑战第21天】 本文旨在深入探讨Java虚拟机(JVM)中的垃圾回收机制,揭示其工作原理、常见算法及参数调优技巧。通过案例分析,展示如何根据应用特性调整GC策略,以提升Java应用的性能和稳定性,为开发者提供实战中的优化指南。 ####
27 5
|
19天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
37 6
|
17天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
40 2
|
26天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
27天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
36 4
|
26天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
11天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
2天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
1天前
|
安全 Java 开发者
Java中的多线程编程:从基础到实践
本文深入探讨了Java多线程编程的核心概念和实践技巧,旨在帮助读者理解多线程的工作原理,掌握线程的创建、管理和同步机制。通过具体示例和最佳实践,本文展示了如何在Java应用中有效地利用多线程技术,提高程序性能和响应速度。
19 1