項(xiàng)目中遇到這樣的需求,特此記錄ZipOutputStream的基本用法燕垃。
/**
* 將txt格式文件轉(zhuǎn)換為zip格式
* @param o
* @return
* @throws Exception
*/
private byte[] txt2Zip (byte o) throws Exception {
// 1.將需要壓縮的字節(jié)輸出流堪簿,轉(zhuǎn)為字節(jié)數(shù)組輸入流,
ByteArrayInputStream bais = new ByteArrayInputStream(o);
// 2.創(chuàng)建字節(jié)數(shù)組輸出流,用于返回壓縮后的輸出流字節(jié)數(shù)組
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 3.創(chuàng)建壓縮輸出流
ZipOutputStream zipOut = new ZipOutputStream(baos);
// 進(jìn)行壓縮存儲(chǔ)
zipOut.setMethod(ZipOutputStream.DEFLATED);
// 壓縮級(jí)別值為0-9共10個(gè)級(jí)別(值越大矢空,表示壓縮越厲害)
zipOut.setLevel(Deflater.BEST_COMPRESSION);
//4.設(shè)置ZipEntry對(duì)象,并對(duì)需要壓縮的文件命名
zipOut.putNextEntry(new ZipEntry("文件導(dǎo)出.txt"));
//5.讀取要壓縮的字節(jié)輸出流禀横,進(jìn)行壓縮
int temp = 0 ;
while((temp=bais.read())!=-1){
// 壓縮輸出
zipOut.write(temp) ;
}
bais.close();
zipOut.close();
try {
return baos.toByteArray();
} finally {
baos.close();
}
}