色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Java中zip的壓縮和解壓縮的實現代碼

瀏覽:20日期:2022-08-16 11:00:29

在Java中可以使用ZipOutputStream和ZipInputStream來實現zip的壓縮和解壓縮操作,另外使用FileSystem也可以用來實現zip的解壓縮,下面將介紹這幾種方式,直接上代碼。

zip壓縮

待壓縮文件目錄結構:

Java中zip的壓縮和解壓縮的實現代碼

每個zip文件項都要對應一個ZipEntry,然后通過ZipOutputStream的putNextEntry方法開始寫入一個新的zip文件項,將文件數據發送到zip輸出流中,完成后再調用closeEntry方法。

@Testpublic void testCompressByZip() {try (//指定壓縮完成后zip文件的存儲路徑ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream('F:myFavorites.zip'))){//待壓縮文件/目錄所在的目錄File fileFolder = new File('F:我的收藏');//獲取目錄下的所有文件File[] files = fileFolder.listFiles();ZipEntry zipEntry;byte[] byteArray;int len;//遍歷目錄下的所有文件/目錄,并將它們添加到壓縮文件中for (File file : files) {//一個ZipEntry對應壓縮文件中的一項zipEntry = new ZipEntry(file.getName());zipOutputStream.putNextEntry(zipEntry);try (FileInputStream in = new FileInputStream(file)) {byteArray = new byte[1024];while ((len = in.read(byteArray)) != -1) {zipOutputStream.write(byteArray, 0, len);}} catch (IOException ex) {ex.printStackTrace();}zipOutputStream.closeEntry();}} catch (IOException ex) {ex.printStackTrace();}}

壓縮結果:

Java中zip的壓縮和解壓縮的實現代碼

zip解壓縮

遍歷zip文件中的所有項,并獲取對應項的輸入流,然后通過FileOutputStream輸出到指定目錄中。

@Testpublic void testDecompressByZip() {try (//指定需要解壓縮的zip文件ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream('F:myFavorites.zip'))){ZipEntry zipEntry;byte[] byteArray;int len;//遍歷zip文件中的所有項,并逐個解壓到指定的目錄中while ((zipEntry = zipInputStream.getNextEntry()) != null) {try (FileOutputStream fileOutputStream = new FileOutputStream('F:我的解壓目錄' + zipEntry.getName())) {byteArray = new byte[1024];while ((len = zipInputStream.read(byteArray)) != -1) {fileOutputStream.write(byteArray, 0, len);}} catch (IOException ex) {ex.printStackTrace();}}} catch (IOException ex) {ex.printStackTrace();}}

解壓縮結果:

Java中zip的壓縮和解壓縮的實現代碼

使用FileSystem解壓縮 建立一個文件系統,包含zip文件中的所有項。 遍歷zip文件中的所有項,通過文件訪問器SimpleFileVisitor將每個項復制到指定目錄中。

@Testpublic void testDecompressByZip2(){try {//將壓縮文件作為一個文件系統訪問FileSystem fileSystem = FileSystems.newFileSystem(Paths.get('F:myFavorites.zip'), null);//遍歷壓縮文件中的內容,并使用文件訪問器訪問所有內容Files.walkFileTree(fileSystem.getPath('/'), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {System.out.println('訪問目錄中文件時調用');//將文件解壓到指定目錄Files.copy(file, new FileOutputStream('F:我的解壓目錄' + file.getName(file.getNameCount() - 1)));return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {System.out.println('訪問目錄中文件之前調用');return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {System.out.println('訪問目錄中文件失敗時調用');return FileVisitResult.SKIP_SUBTREE;}@Overridepublic FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {System.out.println('訪問目錄中的文件及其所有后代之后調用');return FileVisitResult.CONTINUE;}});} catch (IOException ex) {ex.printStackTrace();}}

到此這篇關于Java中zip的壓縮和解壓縮的實現代碼的文章就介紹到這了,更多相關java zip壓縮和解壓縮內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲欧美韩国 | 亚洲国产成人久久笫一页 | 欧美一级欧美三级 | 老司机成人免费精品视频 | 久久91精品国产91久久户 | 成人精品视频一区二区三区 | 久久久久国产成人精品亚洲午夜 | 日本伊人精品一区二区三区 | 特级无码a级毛片特黄 | 免费成人毛片 | 欧美性猛交xxxxx按摩国内 | 美国一级毛片oo | 久久99网站| 国产极品喷水视频jk制服 | 欧美中文一区 | 91视频99 | 亚洲欧美日本视频 | 免费不卡毛片 | 午夜免费福利网站 | 欧美另类久久久精品 | 久草视频在线播放 | 久久久亚洲国产精品主播 | 久久国产精品歌舞团 | 伊人色综合久久天天网蜜月 | 日韩字幕一中文在线综合 | 国产一级特黄全黄毛片 | 亚洲网址在线观看 | 欧美日韩高清观看一区二区 | 午夜一级做a爰片久久毛片 午夜伊人网 | 免费午夜不卡毛片 | 久久国产精品久久久久久 | 久久久久无码国产精品一区 | 国产午夜精品久久理论片小说 | 亚洲免费天堂 | 最新更新国内自拍视频 | 欧美成人性色生活片免费在线观看 | 欧美亚洲激情视频 | 在线观看国产一区 | 欧美日韩精品一区三区 | 成人精品一区二区三区 | 美女把张开腿男生猛戳免费视频 |