2022-04-12. zip文件壓縮與解壓

zip 壓縮
/**

  • 壓縮文件-由于out要在遞歸調(diào)用外,所以封裝一個(gè)方法用來(lái)
  • 調(diào)用ZipFiles(ZipOutputStream out,String path,File... srcFiles)
  • @param zip
  • @param path
  • @param srcFiles
  • @throws IOException
  • @author isea533
    /
    public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
    ZipTest.ZipFiles(out,path,srcFiles);
    out.close();
    System.out.println("*****************壓縮完畢*******************");
    }
    /
    *
  • 壓縮文件-File
  • @param zipFile zip文件
  • @param srcFiles 被壓縮源文件
  • @author isea533
    /
    public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){
    path = path.replaceAll("\
    ", "/");
    if(!path.endsWith("/")){
    path+="/";
    }
    byte[] buf = new byte[1024];
    try {
    for(int i=0;i<srcFiles.length;i++){
    if(srcFiles[i].isDirectory()){
    File[] files = srcFiles[i].listFiles();
    String srcPath = srcFiles[i].getName();
    srcPath = srcPath.replaceAll("\*", "/");
    if(!srcPath.endsWith("/")){
    srcPath+="/";
    }
    out.putNextEntry(new ZipEntry(path+srcPath));
    ZipFiles(out,path+srcPath,files);
    }
    else{
    FileInputStream in = new FileInputStream(srcFiles[i]);
    System.out.println(path + srcFiles[i].getName());
    out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));
    int len;
    while((len=in.read(buf))>0){
    out.write(buf,0,len);
    }
    out.closeEntry();
    in.close();
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

zip 解壓

/**

  • 解壓到指定目錄
  • @param zipPath
  • @param descDir
  • @author isea533
    /
    public static void unZipFiles(String zipPath,String descDir)throws IOException{
    unZipFiles(new File(zipPath), descDir);
    }
    /
    *
  • 解壓文件到指定目錄
  • @param zipFile
  • @param descDir
  • @author isea533
    /
    @SuppressWarnings("rawtypes")
    public static void unZipFiles(File zipFile,String descDir)throws IOException{
    File pathFile = new File(descDir);
    if(!pathFile.exists()){
    pathFile.mkdirs();
    }
    ZipFile zip = new ZipFile(zipFile);
    for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
    ZipEntry entry = (ZipEntry)entries.nextElement();
    String zipEntryName = entry.getName();
    InputStream in = zip.getInputStream(entry);
    String outPath = (descDir+zipEntryName).replaceAll("\
    ", "/");;
    //判斷路徑是否存在,不存在則創(chuàng)建文件路徑
    File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
    if(!file.exists()){
    file.mkdirs();
    }
    //判斷文件全路徑是否為文件夾,如果是上面已經(jīng)上傳,不需要解壓
    if(new File(outPath).isDirectory()){
    continue;
    }
    //輸出文件路徑信息
    System.out.println(outPath);

OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
System.out.println("******************解壓完畢********************");
}

測(cè)試方法
public static void main(String[] args) throws IOException {
/**

  • 壓縮文件
    */
    File[] files = new File[]{new File("d:/English"),new File("d:/發(fā)放數(shù)據(jù).xls"),new File("d:/中文名稱.xls")};
    File zip = new File("d:/壓縮.zip");
    ZipFiles(zip,"abc",files);

/**

  • 解壓文件
    */
    File zipFile = new File("d:/壓縮.zip");
    String path = "d:/zipfile/";
    unZipFiles(zipFile, path);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卿捎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子径密,更是在濱河造成了極大的恐慌午阵,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件享扔,死亡現(xiàn)場(chǎng)離奇詭異底桂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)惧眠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門籽懦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人锉试,你說(shuō)我怎么就攤上這事猫十±辣簦” “怎么了呆盖?”我有些...
    開(kāi)封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贷笛。 經(jīng)常有香客問(wèn)我应又,道長(zhǎng),這世上最難降的妖魔是什么乏苦? 我笑而不...
    開(kāi)封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任株扛,我火速辦了婚禮,結(jié)果婚禮上汇荐,老公的妹妹穿的比我還像新娘洞就。我一直安慰自己,他們只是感情好掀淘,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布旬蟋。 她就那樣靜靜地躺著,像睡著了一般革娄。 火紅的嫁衣襯著肌膚如雪倾贰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天拦惋,我揣著相機(jī)與錄音匆浙,去河邊找鬼。 笑死厕妖,一個(gè)胖子當(dāng)著我的面吹牛首尼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼软能,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挠羔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起埋嵌,我...
    開(kāi)封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤破加,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后雹嗦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體范舀,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年了罪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锭环。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泊藕,死狀恐怖辅辩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娃圆,我是刑警寧澤玫锋,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站讼呢,受9級(jí)特大地震影響撩鹿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悦屏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一节沦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧础爬,春花似錦甫贯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至失乾,卻和暖如春常熙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碱茁。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工裸卫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纽竣。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓墓贿,卻偏偏與公主長(zhǎng)得像茧泪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聋袋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容