JavaAPI解壓縮(zip/rar)

一、解Zip,使用java自帶API

public static void main(String[] args) throws IOException {
   ZipFile zipFile = new ZipFile(new File("d:\\zf\\z.zip"));
   Enumeration<? extends ZipEntry> entries = zipFile.entries();
   while (entries.hasMoreElements()){
       ZipEntry zipEntry = entries.nextElement();
       if(zipEntry.isDirectory()){
           File f = new File("d:\\zf\\" + zipEntry.getName());
           if(!f.exists())
               f.mkdirs();
       }else {
           File f = new File("d:\\zf\\" + zipEntry.getName());
           if(!f.exists())
               f.createNewFile();
           InputStream is = zipFile.getInputStream(zipEntry);
           OutputStream os = new FileOutputStream(f);
           byte[] buf = new byte[2048];
           int len;
           while ((len=is.read(buf))!=-1)
               os.write(buf, 0, len);
           os.close();
           is.close();
       }
   }
}

二、解Rar,使用依賴包com.github.junrar:junrar:3.0.0

public static void main(String[] args) throws Exception {
   File outFileDir = new File("d:\\zf\\");
   if (!outFileDir.exists()) {
       boolean isMakDir = outFileDir.mkdirs();
       if (isMakDir) {
           System.out.println("創建壓縮目錄成功");
       }
   }
   Archive archive = new Archive(new FileInputStream(new File("d:\\zf\\r.rar")));
   FileHeader fileHeader = archive.nextFileHeader();
   while (fileHeader != null) {
       if (fileHeader.isDirectory()) {
           fileHeader = archive.nextFileHeader();
           continue;
       }
       File out = new File("d:\\zf\\" + fileHeader.getFileNameString());
       if (!out.exists()) {
           if (!out.getParentFile().exists()) {
               out.getParentFile().mkdirs();
           }
           out.createNewFile();
       }
       FileOutputStream os = new FileOutputStream(out);
       archive.extractFile(fileHeader, os);

       os.close();

       fileHeader = archive.nextFileHeader();
   }
   archive.close();
}

參考:有過參考,鏈接找不到了。。。蛋疼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章