基于zipoutputStream的簡單使用
一 原因
最近在改bug的時候遇到了一個與zipoutputStream相關的代碼
雖然最終不是這處代碼的問題,但是自己還是想總結一下zipoutputStream的使用
二 zipoutputStream 類圖

三 zipoutputStream使用
zipoutputStream是fileOutputStream中的一種,它可以將內容直接寫入到zip包中。
一般創(chuàng)建zipoutputStream通常是封裝一個FileOutputStream,然后在每寫入一個文件之前,需要先調用一次putNextEntry,然后使用write寫入byte[]類型的數據,當寫入完畢的時候使用colseEntry來結束這個文件的打包
其中
ZipEntry 表示壓縮文件的條目 (就相當與java文件中的directory目錄一樣)
putNextEntry 開始編寫新的ZIP文件條目并將流定位到條目數據的開頭(換一個新的開始從頭寫).
如果仍然有效,則關閉當前的目錄,如果沒有為目錄指定相關的壓縮方法,則使用默認的壓縮方法。
如果沒有設置時間,則默認使用當前時間 (就是將條目放到zip包中)
代碼說明:
import org.junit.Test;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ziptest {
@Test
public void test() throws IOException {
//File.separator代表了當前系統的文件分割符
//linux使用/分割符會報錯找不到文件,window系統下/和\都可以作為文件路徑
System.out.println("File.separator="+ File.separator);
File file = new File("D:" + File.separator + "upgrade46.txt");
File zipFile = new File("d:" + File.separator + "hello.zip");
//讀取相關的文件
InputStream input = new FileInputStream(file);
//設置輸出流
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(
zipFile));
zipOut.putNextEntry(new ZipEntry(file.getName()));
// 設置注釋
zipOut.setComment("hello");
int temp = 0;
//讀取相關的文件
while((temp = input.read()) != -1){
//寫入輸出流中
zipOut.write(temp);
}
//關閉流
input.close();
zipOut.close();
}
}實現效果:

實現原理:

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java的arraylist排序示例(arraylist用法)
這篇文章主要介紹了java的arraylist排序示例,學習一下arraylist的用法,需要的朋友可以參考下2014-03-03
基于Spring Batch向Elasticsearch批量導入數據示例
本文介紹了基于Spring Batch向Elasticsearch批量導入數據示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02

