Java的文件解压-Zip格式

1 /** 2 * 作者认为解压缩最安全的方法 3 * 先创建所有的文件夹 4 * 之后创建再文件 5 * <p> 6 * 原因:未处理好当压缩文件夹下第一个是一个文件夹,考虑到存在有文件可以没有(.)等这些标识符,无法识别出是否是文件夹还是文件, 7 * 故根据zipEntry.getName后续返回值是否存在后续文件夹即(\\符号)判断是否其是文件夹,进而可以创建出压缩包下所有的文件夹 8 * 当所有的文件夹创建好之后,压缩文件与现有的文件目录的唯一区别就是文件 9 * 此时,可以直接对压缩文件目录与现解压文件目录进行比较,如果不存在则进行copy,如果存在,则不处理 10 * 如果有发现更好的处理方式,将继续更改 11 */ 12public class ZipFileDemo { 13 public static void main(String[] args) { 14 createFolder("E:\\HUAT2.zip","E:\\aaa"); 15 } 16 17 public static void createFolder(String filePath, String savePath) { 18 ZipInputStream inputStream = null; 19 ZipEntry zipEntry = null; 20 try { 21 inputStream = new ZipInputStream(new FileInputStream(filePath)); 22 while ((zipEntry = inputStream.getNextEntry()) != null) { 23 String fileName = zipEntry.getName(); 24 File file = new File(savePath + File.separator + fileName); 25 if (!file.getParentFile().exists()) { 26 file.getParentFile().mkdirs(); 27 } 28 } 29 createFile(filePath, savePath); 30 } catch (FileNotFoundException e) { 31 e.printStackTrace(); 32 } catch (IOException e) { 33 e.printStackTrace(); 34 } finally { 35 try { 36 inputStream.close(); 37 } catch (IOException e) { 38 e.printStackTrace(); 39 } 40 } 41 } 42 43 private static void createFile(String filePath, String savePath) { 44 ZipInputStream inputStream = null; 45 ZipEntry zipEntry = null; 46 OutputStream outputStream = null; 47 try { 48 inputStream = new ZipInputStream(new FileInputStream(filePath)); 49 while ((zipEntry = inputStream.getNextEntry()) != null) { 50 String fileName = zipEntry.getName(); 51 System.out.println(fileName); 52 File file = new File(savePath + File.separator + fileName); 53 54 if (!file.exists()) { 55 outputStream = new FileOutputStream(file, true); 56 int len = 0; 57 byte[] bytes = new byte[1024]; 58 while ((len = inputStream.read(bytes)) != -1) { 59 outputStream.write(bytes, 0, len); 60 } 61 outputStream.close(); 62 } 63 } 64 inputStream.close(); 65 } catch (FileNotFoundException e) { 66 e.printStackTrace(); 67 } catch (IOException e) { 68 e.printStackTrace(); 69 } 70 71 } 72} 73
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

牛逼!五分钟开发一款桌面版应用

1、下载nw.jshttps://nwjs.io/最好下载sdk版本。2、解压打开安装包下载完之后,解压打开图中的app文件夹是我自己创建的,你也需要自己创建一个,里面放你项目文件。app文件夹中一般放一个index.html(页面展示),另外还需要创建一个package.json文件(参数配置):        "name":  "first  ap

Python爬虫-爬取小说-下载小说

一、创建文件夹(1)、创建指定文件夹判断文件夹是否存在,不存在则创建defJudgefolder():folder"novel"ifnotos.path.exists(folder):print("文件不存在,已创建!")os.mkdir(folder)else:prin

Java 解压zip压缩包

因为最近项目需要批量上传文件,而这里的批量就是将文件压缩在了一个zip包里,然后读取文件进行解析文件里的内容。因此需要先对上传的zip包进行解压。以下直接提供代码供参考:1.第一个方法是用于解压zip压缩包的方法。2.第二个方法是 删除该文件夹以及子目录和子目录文件的方法。3.第三个方法是删除 删除文件夹内所有文件和子目录的方法。因为

Dictionary类 操作文件夹

创建一个控制台应用程序,复制此代码,取消相关所需要的注释即可运行Directory操作文件夹CreateDirectory创建文件夹Delete 删除文件夹Move 剪切文件夹Exist 判断是否存在GetFiles获得指定的目录下所有文件的全路径GetDirectory获得指定目录下所有文件夹的全路径

C#解压或压缩文件夹

C解压或压缩文件夹最近要做一个项目涉及到C中压缩与解压缩的问题的解决方法,大家分享。这里主要解决文件夹包含文件夹的解压缩问题。1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免费版本,“Assemblies(https