成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

如何基于java實現(xiàn)解壓ZIP TAR等文件

瀏覽:80日期:2022-08-27 18:51:03

java實現(xiàn)對常用.ZIP , .TAR, .TAR.BZ2, .BZ2 ,.TAR.GZ ,.GZ格式文件的解壓。

首先需要引入maven依賴,這里使用的是Apache的壓縮工具包common-compress,改工具包支持解壓、壓縮,此代碼中我列舉出一個zip的壓縮示例,其他格式的只需切換改格式對應(yīng)的流即可。

對于RAR格式文件的解壓,目前該工具包還不支持,希望大家做過的可以多多交流。

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.19</version></dependency>

import org.apache.commons.compress.archivers.tar.TarArchiveEntry;import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;import org.apache.commons.compress.utils.IOUtils;import java.io.*;/** * @author :zhangzhiyong * @description: java實現(xiàn)常見文件格式的解壓與壓縮 * 支持.ZIP .TAR .TAR.BZ2 .BZ2 .TAR.GZ .GZ * 其他格式compress包也支持,在此基礎(chǔ)上開發(fā)即可 * 另外壓縮文件只寫了ZIP壓縮的方法zipCompression,其他的格式類似,換成對應(yīng)的文件流即可。 * 暫不支持RAR壓縮格式,RAR可以用junrar的工具包,但是有缺陷: * 其一:如果壓縮文件中有中文名字的文件夾,解壓以后文件夾名字是亂碼,但是不影響文件夾里面的文件; * 其二:最新 WinRar 壓縮產(chǎn)生的 .rar 文件可能會無法解壓。 * 缺陷原因:rar 有版權(quán),有些東西沒有公開,對解壓有一些限制,即使其他解壓包也可能有問題,但是建議嘗試。 * @date :2020/7/1 20:44 */public class CompressionFileUtil { /** * @param filePath 需要解壓的zip文件的完成路徑。 * @param unzipPath 解壓過后生成文件的存放路徑 * @description: 對zip文件進行解壓。 * @return: boolean * @author: ZZY * @time: 2020/7/2 14:47 */ public static boolean zipUnCompress(String filePath, String unzipPath) throws IOException { System.out.println('開始解壓ZIP..........'); FileInputStream fis = null; ZipArchiveInputStream zis = null; try { File file = new File(filePath); fis = new FileInputStream(file); zis = new ZipArchiveInputStream(fis); ZipArchiveEntry nze = null; while ((nze = zis.getNextZipEntry()) != null) {FileOutputStream os = null;BufferedOutputStream bos = null;try { System.out.println('正在解壓.....' + nze.getName()); //自動添加File.separator文件路徑的分隔符,根據(jù)系統(tǒng)判斷是還是/ String dir = unzipPath + File.separator + nze.getName(); //解壓全路徑 System.out.println('dir---' + dir); File file1 = null; if (nze.isDirectory()) { file1 = new File(dir); file1.mkdirs(); } else { file1 = new File(dir); os = new FileOutputStream(file1); bos = new BufferedOutputStream(os); /*byte [] bt = new byte[1024]; int len = 0; while((len = zis.read(bt,0,1024)) != -1){ bos.write(bt,0,len); }*/ IOUtils.copy(zis, bos); //作用與上面注釋代碼一樣 } System.out.println('解壓完成......');} catch (FileNotFoundException e) { e.printStackTrace(); return false;} finally { if (bos != null) { bos.close(); } if (os != null) { os.close(); }} } } catch (Exception e) { e.printStackTrace(); return false; } finally { if (zis != null) {zis.close(); } if (fis != null) {fis.close(); } } return true; } /** * @param filesPathArray 多個文件的絕對路徑,是一個數(shù)組。 * @param zipFilePath 生成的壓縮文件的位置,包括生成的文件名,如D:ziptest.zip * @description: 將多個文件壓縮成ZIP壓縮包。 * @return: boolean * @author: ZZY * @time: 2020/7/2 14:42 */ public static boolean zipCompression(String[] filesPathArray, String zipFilePath) throws Exception { System.out.println('開始壓縮ZIP文件'); ZipArchiveOutputStream zos = null; FileOutputStream fos = null; try { fos = new FileOutputStream(new File(zipFilePath)); zos = new ZipArchiveOutputStream(fos); for (String filePath : filesPathArray) {FileInputStream fis = null;BufferedInputStream bis = null;try { File file = new File(filePath); // 第二個參數(shù)如果是文件全路徑名,那么壓縮時也會將路徑文件夾也縮進去; // 我們只壓縮目標文件,而不壓縮該文件所處位置的相關(guān)文件夾,所以這里我們用file.getName() System.out.println('開始壓縮...' + file.getName()); ZipArchiveEntry zae = new ZipArchiveEntry(file, file.getName()); zos.putArchiveEntry(zae); fis = new FileInputStream(file); bis = new BufferedInputStream(fis); int count; byte[] bt = new byte[1024]; while ((count = bis.read(bt, 0, 1024)) != -1) { zos.write(bt, 0, count); }} finally { zos.closeArchiveEntry(); if (bis != null) bis.close(); if (fis != null) fis.close();} } } finally { if (zos != null)zos.close(); if (fos != null)fos.close(); } System.out.println('壓縮完成......'); return true; } /** * @param inputStream 每種TAR文件用不同的輸入流,unCompress方法中已注明 * @param unTarPath TAR文件解壓后的存放路徑 * @description: 解壓TAR類文件,包括.TAR .TAR.BZ2 .TAR.GZ * @return: void * @author: ZZY * @time: 2020/7/2 17:42 */ public static void unTar(InputStream inputStream, String unTarPath) throws IOException { FileInputStream fis = null; TarArchiveInputStream tis = null; try { tis = new TarArchiveInputStream(inputStream); TarArchiveEntry nte = null; System.out.println('開始解壓......'); while ((nte = tis.getNextTarEntry()) != null) {String dir = unTarPath + File.separator + nte.getName();System.out.println('正在解壓......' + dir);FileOutputStream fos = null;BufferedOutputStream bos = null;try { if (nte.isDirectory()) { File file1 = new File(dir); file1.mkdirs(); } else { File file2 = new File(dir); fos = new FileOutputStream(file2); bos = new BufferedOutputStream(fos); IOUtils.copy(tis, bos); }} catch (Exception e) { e.printStackTrace();} finally { if (bos != null) { bos.close(); } if (fos != null) { fos.close(); }} } System.out.println('解壓完成......'); } catch (IOException e) { e.printStackTrace(); } finally { if (tis != null) {tis.close(); } if (fis != null) {fis.close(); } } } public static boolean unCompress(String filePath,String unCompressPath) throws Exception { String fileType = filePath.toUpperCase(); if(fileType.endsWith('.TAR')){ System.out.println('解壓的.TAR包'); //.TAR包用一般的FileInputStream流讀取 unTar(new FileInputStream(filePath),unCompressPath); } else if(fileType.endsWith('.TAR.GZ')){ System.out.println('解壓的.TAR.GZ包'); //.TAR.GZ包要用GzipCompressorInputStream讀取 unTar(new GzipCompressorInputStream(new FileInputStream(filePath)),unCompressPath); } else if(fileType.endsWith('.TAR.BZ2')){ System.out.println('解壓的.TAR.BZ2包'); unTar(new BZip2CompressorInputStream(new FileInputStream(filePath)),unCompressPath); } else if(fileType.endsWith('.ZIP')){ System.out.println('解壓的.ZIP包'); zipUnCompress(filePath,unCompressPath); } else{ System.out.println('暫不支持該種格式文件的解壓'); } return true; } public static void main(String[] args) throws Exception { unCompress('D:testzipnginx-1.18.0.rar','D:testzip'); }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一区二区美女| 一区在线播放| 尤物在线精品| 欧美韩国日本综合| 本田岬高潮一区二区三区| 欧美日韩一区二区欧美激情| 亚洲h动漫在线| 极品中文字幕一区| 日本一区二区综合亚洲| 欧美日韩三区四区| 国产欧美日本一区二区三区| 99精品国产一区二区三区不卡| 日韩一区二区三区在线观看| 国内外成人在线视频| 欧美性色综合网| 久久国产人妖系列| 欧美狂野另类xxxxoooo| 精品亚洲成a人在线观看| 欧美性猛交xxxx黑人交| 日本在线播放一区二区三区| 一本一道综合狠狠老| 性欧美大战久久久久久久久| 国产三级精品在线不卡| 亚洲最色的网站| 亚洲一区免费| 五月婷婷激情综合网| 美女91精品| 日韩av电影一区| 在线精品视频免费观看| 老司机一区二区| 欧美二区三区91| 国产电影精品久久禁18| 精品精品欲导航| 欧美阿v一级看视频| 欧美国产精品专区| 一区二区在线不卡| 亚洲乱码中文字幕| 国产精品亚洲综合久久| 午夜精品久久久久久久99水蜜桃| 免费日韩av| 免费成人av资源网| 91精品国产全国免费观看| 国产91丝袜在线播放| 26uuu亚洲综合色欧美| 欧美日韩在线精品一区二区三区| 亚洲欧美视频在线观看| 久久久久看片| 国产专区综合网| 精品人在线二区三区| 欧美精品二区三区四区免费看视频| 中文字幕亚洲精品在线观看| 中国成人亚色综合网站| 亚洲成人av电影在线| 欧美在线不卡一区| 成人免费毛片高清视频| 国产精品卡一卡二卡三| 国产精品日韩欧美一区二区| 久久er99精品| 久久新电视剧免费观看| 亚洲国产免费看| 天天影视网天天综合色在线播放| 欧美精品第一页| 欧美韩国一区| 亚洲中国最大av网站| 在线观看欧美黄色| 不卡欧美aaaaa| 亚洲蜜桃精久久久久久久| 色国产精品一区在线观看| 菠萝蜜视频在线观看一区| 亚洲精品少妇30p| 欧美日韩国产另类一区| 午夜天堂精品久久久久| 亚洲成人av资源| 日韩免费看的电影| 国产主播精品| 老司机精品视频线观看86| 久久久噜噜噜久久人人看| 亚洲欧美日韩专区| 国产精品一区一区| 国产精品国产三级国产| 欧美视频一二三区| 欧美91视频| 亚洲国产中文字幕| 日韩视频在线你懂得| 激情国产一区| 老司机精品视频导航| 国产日韩精品一区| 可以看av的网站久久看| 成人aa视频在线观看| 亚洲一区av在线| 日韩欧美在线不卡| 制服诱惑一区二区| 成人av影视在线观看| 亚洲网友自拍偷拍| 日韩美女一区二区三区四区| 国产精品久久亚洲7777| 成人一道本在线| 一区二区三区在线视频免费| 日韩一区二区免费视频| 亚洲欧美日韩综合国产aⅴ| 91一区二区在线| 久久99精品久久久久久动态图| 中文字幕在线不卡视频| 91精品国产综合久久福利| 国产日韩一区二区| 91一区二区在线观看| 免费成人结看片| 亚洲欧美日韩国产综合在线| 日韩三级视频在线观看| 性一交一乱一区二区洋洋av| av一区二区久久| 免费观看91视频大全| 欧美国产精品v| 欧美久久一二区| 亚洲欧美成人| 暖暖成人免费视频| 精品一二线国产| 樱花草国产18久久久久| 精品日本一线二线三线不卡| 在线观看成人小视频| 亚洲激情女人| 不卡视频在线观看| 麻豆精品视频在线观看免费| 亚洲日本成人在线观看| 久久综合国产精品| 欧美日韩国产一区| 久久国产精品免费一区| 91丨九色丨黑人外教| 久久99国产精品麻豆| 亚洲一区二区三区爽爽爽爽爽| 久久青草国产手机看片福利盒子| 欧美日韩一区在线| 久久国产精品久久久久久电车| 激情国产一区| 91蝌蚪porny九色| 国产成人a级片| 美国欧美日韩国产在线播放| 亚洲一区免费视频| 国产精品久久久久国产精品日日| 欧美videos中文字幕| 欧美性大战久久| 久久精品人人| 亚洲精品婷婷| 欧美午夜精品久久久久免费视| 成人丝袜视频网| 国产真实乱子伦精品视频| 午夜精品久久久久久久99水蜜桃| 国产精品毛片久久久久久久| 精品国内片67194| 日韩一区二区三区观看| 欧美丰满少妇xxxxx高潮对白| 色婷婷激情一区二区三区| 国产精品手机视频| 在线国产日韩| 欧美69wwwcom| 99r精品视频| 成人午夜激情影院| 久久成人免费网| 日韩精品免费专区| 亚洲丶国产丶欧美一区二区三区| 18成人在线视频| 亚洲欧美综合在线精品| 国产日韩精品一区二区三区| 久久男人中文字幕资源站| 日韩欧美资源站| 日韩三级伦理片妻子的秘密按摩| 欧美精品成人一区二区三区四区| 欧美日韩中文精品| 欧美日韩一区在线观看| 日本精品视频一区二区| 久久久久久精| 午夜亚洲视频| 亚洲一区日韩在线| 久久国产精品亚洲va麻豆| 国产亚洲毛片在线| 国产婷婷精品| 国产欧美日韩一区| 国产精品亚洲产品| 欧美综合二区| 久久精品日产第一区二区| 国产伦精品一区二区三区照片91| 国产一区二区高清| 亚欧成人精品| 色屁屁一区二区| 日本久久电影网| 欧美视频精品在线观看| 欧美日韩美少妇| 欧美精品日韩综合在线| 欧美一卡二卡在线观看| 日韩欧美国产精品一区| 欧美一级一区二区| 久久综合成人精品亚洲另类欧美| 国产免费观看久久| 亚洲欧洲一区二区三区| 一区二区三区四区精品在线视频 | 欧美日韩在线精品一区二区三区| 合欧美一区二区三区| 99亚洲伊人久久精品影院红桃| 国产偷久久久精品专区| 奶水喷射视频一区|