亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼

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

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

zip壓縮

待壓縮文件目錄結(jié)構(gòu):

Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼

每個(gè)zip文件項(xiàng)都要對(duì)應(yīng)一個(gè)ZipEntry,然后通過ZipOutputStream的putNextEntry方法開始寫入一個(gè)新的zip文件項(xiàng),將文件數(shù)據(jù)發(fā)送到zip輸出流中,完成后再調(diào)用closeEntry方法。

@Testpublic void testCompressByZip() {try (//指定壓縮完成后zip文件的存儲(chǔ)路徑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) {//一個(gè)ZipEntry對(duì)應(yīng)壓縮文件中的一項(xiàng)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();}}

壓縮結(jié)果:

Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼

zip解壓縮

遍歷zip文件中的所有項(xiàng),并獲取對(duì)應(yīng)項(xiàng)的輸入流,然后通過FileOutputStream輸出到指定目錄中。

@Testpublic void testDecompressByZip() {try (//指定需要解壓縮的zip文件ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream('F:myFavorites.zip'))){ZipEntry zipEntry;byte[] byteArray;int len;//遍歷zip文件中的所有項(xiàng),并逐個(gè)解壓到指定的目錄中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();}}

解壓縮結(jié)果:

Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼

使用FileSystem解壓縮 建立一個(gè)文件系統(tǒng),包含zip文件中的所有項(xiàng)。 遍歷zip文件中的所有項(xiàng),通過文件訪問器SimpleFileVisitor將每個(gè)項(xiàng)復(fù)制到指定目錄中。

@Testpublic void testDecompressByZip2(){try {//將壓縮文件作為一個(gè)文件系統(tǒng)訪問FileSystem fileSystem = FileSystems.newFileSystem(Paths.get('F:myFavorites.zip'), null);//遍歷壓縮文件中的內(nèi)容,并使用文件訪問器訪問所有內(nèi)容Files.walkFileTree(fileSystem.getPath('/'), new SimpleFileVisitor<Path>() {@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {System.out.println('訪問目錄中文件時(shí)調(diào)用');//將文件解壓到指定目錄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('訪問目錄中文件之前調(diào)用');return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {System.out.println('訪問目錄中文件失敗時(shí)調(diào)用');return FileVisitResult.SKIP_SUBTREE;}@Overridepublic FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {System.out.println('訪問目錄中的文件及其所有后代之后調(diào)用');return FileVisitResult.CONTINUE;}});} catch (IOException ex) {ex.printStackTrace();}}

到此這篇關(guān)于Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)java zip壓縮和解壓縮內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美高清一级毛片免费视 | 日韩美女黄大片在线观看 | 欧美一级毛片欧美一级无片 | 看真人一一级毛片 | 91久久国产露脸精品免费 | 国产毛片a精品毛 | 色综合亚洲天天综合网站 | 欧美久久精品 | 日韩第四页 | 99re热这里只有精品18 | 国产免费一区2区3区4区 | 91尤物在线视频 | 久久美女网 | 日本伊人网 | 99九九精品免费视频观看 | 美女在线不卡 | 国产成人精选免费视频 | 欧美黄色一级视屏 | 欧美午夜理伦三级在线观看 | 一级黄色激情片 | 国产最新精品 | 欧美啊片 | 国产成人免费高清在线观看 | 国产农村妇女成人精品 | 婷婷综合激情 | 久99频这里只精品23热 视频 | 1000部国产成人免费视频 | 精品亚洲午夜久久久久 | 亚洲中国日本韩国美国毛片 | 久久久久亚洲国产 | 成人久久在线 | 成人情趣视频无遮掩免费 | 亚洲精品国产成人7777 | 亚洲精品自拍愉拍第二页 | 色老头福利视频在线观看 | 欧美一区二区手机在线观看视频 | 国产精品网站在线进入 | 伊人久久综合成人亚洲 | 日本中文字幕乱码aa高清电影 | 成人亚洲精品一区二区 | 美国一级毛片aa |