介绍
这篇文章主要介绍了如何在Java中利用zip实现压缩和解压缩,小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随小编来看看吧!
Java是什么
Java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。
zip压缩
待压缩文件目录结构:
每个邮政文件项都要对应一个ZipEntry,然后通过ZipOutputStream的putNextEntry方法开始写入一个新的zip文件项,将文件数据发送到zip输出流中,完成后再调用closeEntry方法。
@Test public void  testCompressByZip (), { try (//指定压缩完成后邮政文件的存储路径 ZipOutputStream ZipOutputStream =, new ZipOutputStream (new FileOutputStream (“F: \ \ myFavorites.zip")) ) {//待压缩文件/目录所在的目录 File fileFolder =, new 文件(“F: \ \我的收藏“);//获取目录下的所有文件 文件[],files =, fileFolder.listFiles (); ZipEntry zipEntry; 中byteArray, byte [], int 兰;//遍历目录下的所有文件/目录,并将它们添加到压缩文件中 for (File File :文件),{//一个ZipEntry对应压缩文件中的一项 时间=zipEntry new ZipEntry (file.getName ()); zipOutputStream.putNextEntry (zipEntry); try (FileInputStream =拷贝,new FileInputStream(文件),{ 时间=byteArray new 字节[1024]; while ((len =, in.read(中byteArray)), !=, 1), { zipOutputStream.write(中byteArray, 0,, len); } },catch (IOException 交货),{ ex.printStackTrace (); } zipOutputStream.closeEntry (); } },catch (IOException 交货),{ ex.printStackTrace (); } }
压缩结果:
zip解压缩
遍历zip文件中的所有项,并获取对应项的输入流,然后通过FileOutputStream输出到指定目录中。
@Test public void  testDecompressByZip (), { try (//指定需要解压缩的zip文件 ZipInputStream ZipInputStream =, new ZipInputStream (new FileInputStream (“F: \ \ myFavorites.zip")) ) { ZipEntry zipEntry; 中byteArray, byte [], int 兰;//遍历zip文件中的所有项,并逐个解压到指定的目录中 while ((zipEntry =, zipInputStream.getNextEntry ()), !=, null), { 时间=try (FileOutputStream FileOutputStream new FileOutputStream (“F: \ \我的解压目录\ \“,+,zipEntry.getName ())), { 时间=byteArray new 字节[1024]; while ((len =, zipInputStream.read(中byteArray)), !=, 1), { fileOutputStream.write(中byteArray, 0,, len); } },catch (IOException 交货),{ ex.printStackTrace (); } } },catch (IOException 交货),{ ex.printStackTrace (); } }
解压缩结果:
使用文件系统解压缩
- <李>
建立一个文件系统,包含邮政文件中的所有项。
李> <李>遍历zip文件中的所有项,通过文件访问器SimpleFileVisitor将每个项复制到指定目录中。
李>@Test public void  testDecompressByZip2 () { try {//将压缩文件作为一个文件系统访问 FileSystem FileSystem =, FileSystems.newFileSystem (Paths.get (“F: \ \ myFavorites.zip"),, null);//遍历压缩文件中的内容,并使用文件访问器访问所有内容 Files.walkFileTree (fileSystem.getPath (“/?, new SimpleFileVisitor(), { @Override public FileVisitResult  visitFile (Path 文件,,BasicFileAttributes attrs), throws IOException { System.out.println(“访问目录中文件时调用“);//将文件解压到指定目录 Files.copy(文件,new FileOutputStream (“F: \ \我的解压目录\ \“,+,file.getName (file.getNameCount(),安康;1))); return FileVisitResult.CONTINUE; } @Override public FileVisitResult  preVisitDirectory (Path dir, BasicFileAttributes attrs), throws IOException { System.out.println(“访问目录中文件之前调用“); return FileVisitResult.CONTINUE; } @Override public FileVisitResult  visitFileFailed (Path 文件,,IOException exc), throws IOException { System.out.println(“访问目录中文件失败时调用“); return FileVisitResult.SKIP_SUBTREE; } @Override public FileVisitResult  postVisitDirectory (Path dir, IOException exc), throws IOException { System.out.println(“访问目录中的文件及其所有后代之后调用“); return FileVisitResult.CONTINUE; } }); },catch (IOException 交货),{ ex.printStackTrace (); } } 如何在Java中利用zip实现压缩和解压缩