2020-03-20
JAVAZIP

圖解 Java Zip 包裹檔案

Java ZipOutputStream 使用教學

Java Zip

Java API 中提供了 java.util.zip 這個套件來處理檔案的壓縮與解壓縮, 在壓縮的時候我們主要使用的是 ZipOutputStream

壓縮

1. 建立單個壓縮檔

先展示如何建立一個文字檔,然後壓縮起來

// 建立檔案輸出流
FileOutputStream fos = new FileOutputStream("/your/path/output.zip"); // 輸出檔名
ZipOutputStream zipOut = new ZipOutputStream(fos); // 用檔案輸出流建立出 Zip 輸出流

byte[] str2Bytes = "Hello Zip.".getBytes(); // 文字內容轉為 Bytes

// 在 zip 內加入一個項目
// (可以是一個檔名,或用目錄來表示)
zipOut.putNextEntry(new ZipEntry("file001.txt"));
// zipOut.putNextEntry(new ZipEntry("dir/file001.txt"));
zipOut.write(str2Bytes);

zipOut.close();
fos.close();

看不懂,一臉懵?! 沒關係~ 我第一次看到也是這感覺哈! 我試著把自己的理解畫出來給大家看看

declare file output stream

FileOutputStream fos = new FileOutputStream("/your/path/output.zip");

我們先建立一個 FileOutputStream 並且告訴他我們的目標輸出的位置

declare zip output stream-1

ZipOutputStream zipOut = new ZipOutputStream(fos);

用檔案輸出流 fos 建立出 Zip 輸出流

put next entry

byte[] str2Bytes = "Hello Zip.".getBytes(); // 文字內容轉為 Bytes

// 在 zip 內加入一個項目
// (可以是一個檔名,或用目錄來表示)
zipOut.putNextEntry(new ZipEntry("file001.txt"));
zipOut.write(str2Bytes); // 放入 bytes 內容

// 關閉輸出流
zipOut.close();
fos.close();

透過 putNextEntry() 方法把 ZipEntry 放進去之後, 再用 write() 方法把放入 bytes 內容 最後再關閉輸出流,我們的 Zip 檔案就成功建立了!!