基于zipoutputStream的簡單使用
一 原因
最近在改bug的時候遇到了一個與zipoutputStream相關(guān)的代碼
雖然最終不是這處代碼的問題,但是自己還是想總結(jié)一下zipoutputStream的使用
二 zipoutputStream 類圖
三 zipoutputStream使用
zipoutputStream是fileOutputStream中的一種,它可以將內(nèi)容直接寫入到zip包中。
一般創(chuàng)建zipoutputStream通常是封裝一個FileOutputStream,然后在每寫入一個文件之前,需要先調(diào)用一次putNextEntry,然后使用write寫入byte[]類型的數(shù)據(jù),當(dāng)寫入完畢的時候使用colseEntry來結(jié)束這個文件的打包
其中
ZipEntry 表示壓縮文件的條目 (就相當(dāng)與java文件中的directory目錄一樣)
putNextEntry 開始編寫新的ZIP文件條目并將流定位到條目數(shù)據(jù)的開頭(換一個新的開始從頭寫).
如果仍然有效,則關(guān)閉當(dāng)前的目錄,如果沒有為目錄指定相關(guān)的壓縮方法,則使用默認(rèn)的壓縮方法。
如果沒有設(shè)置時間,則默認(rèn)使用當(dāng)前時間 (就是將條目放到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代表了當(dāng)前系統(tǒng)的文件分割符 //linux使用/分割符會報錯找不到文件,window系統(tǒng)下/和\都可以作為文件路徑 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"); //讀取相關(guān)的文件 InputStream input = new FileInputStream(file); //設(shè)置輸出流 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( zipFile)); zipOut.putNextEntry(new ZipEntry(file.getName())); // 設(shè)置注釋 zipOut.setComment("hello"); int temp = 0; //讀取相關(guān)的文件 while((temp = input.read()) != -1){ //寫入輸出流中 zipOut.write(temp); } //關(guān)閉流 input.close(); zipOut.close(); } }
實現(xiàn)效果:
實現(xiàn)原理:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java中向上造型向下造型和接口回調(diào)中的問題
這篇文章主要介紹了淺談Java中向上造型向下造型和接口回調(diào)中的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08- 這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡稱?HTTP,它的作用是用于實現(xiàn)服務(wù)器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
java的arraylist排序示例(arraylist用法)
這篇文章主要介紹了java的arraylist排序示例,學(xué)習(xí)一下arraylist的用法,需要的朋友可以參考下2014-03-03Kafka的安裝及接入SpringBoot的詳細(xì)過程
Kafka 是一種高性能、分布式的消息隊列系統(tǒng),最初由 LinkedIn 公司開發(fā),并于2011年成為 Apache 頂級項目,這篇文章主要介紹了Kafka的安裝及接入SpringBoot,需要的朋友可以參考下2024-05-05基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例
本文介紹了基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02最新評論