溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么實現創(chuàng)建Zip壓縮包并寫入文件

發(fā)布時間:2022-01-17 17:57:46 來源:億速云 閱讀:259 作者:kk 欄目:開發(fā)技術

Java怎么實現創(chuàng)建Zip壓縮包并寫入文件,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

前言

工作中需要把一些數據放到一個zip的壓縮包中,可以使用 ZipOutputStream。ZipOutputStream可以將內容直接寫入到zip包中。一般創(chuàng)建ZipOutputStream通常是先封裝一個FileOutputStream,然后在每寫入一個文件之前,需要先調用一次putNextEntry,然后使用write寫入byte[]類型的數據,當寫入完畢的時候使用colseEntry來結束這個文件的打包。當然也可以通過ZipOutputStream直接把數據寫入壓縮包內,在壓縮包內構建數據。

使用

public static void filetest() throws IOException {
        String txtPath = "D:\\fileTest\\image\\2.txt";
        String zipPath = "D:\\fileTest\\image\\2.zip";   //壓縮包路徑
        String str = "測試test123abc";                   //需要寫入的數據

        //創(chuàng)建壓縮包
        ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPath));
    
       //封裝一個文件
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(txtPath);
            fileWriter.write(str);
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            log.error("fileWriter", e);
        }
    
        //對上面封裝好的文件構建一個FileInputStream
        FileInputStream fis = new FileInputStream(txtPath);
        //壓縮包里創(chuàng)建一個空文件
        zipOutputStream.putNextEntry(new ZipEntry("Request.json"));
        //寫入壓縮文件
        int len;
        byte[] buffer = new byte[1024]; //字節(jié)數組大小可調節(jié)
        //讀取fis字節(jié)流,轉移到buffer字節(jié)數組中去,讀取后fis為空
        while ((len = fis.read(buffer)) > 0) {
            zipOutputStream.write(buffer, 0, len);
        }
        byte[] b = new byte[1024];
        int a = fis.read(b);
        //關閉壓縮包打包
        zipOutputStream.closeEntry();
        fis.close();
        zipOutputStream.flush();
        zipOutputStream.close();
    }

運行之后,將會創(chuàng)建如下文件:

Java怎么實現創(chuàng)建Zip壓縮包并寫入文件

壓縮包內會產生一個叫Request.json文件,如圖:

Java怎么實現創(chuàng)建Zip壓縮包并寫入文件

內容與2.txt里的內容一致,為“測試test123abc”。

上述方法是:先創(chuàng)建2.txt,再讀取2.txt的內容,導入到壓縮包內形成文件。相同的邏輯,我們可以讀取任意其他文件,然后把他們放入到壓縮包內。

直接將內容導入到壓縮包內

當然我們也可以直接將數據導入到壓縮包內。實現如下: 

 public static void filetest() throws IOException {
      String zipPath = "D:\\fileTest\\image\\3.zip";      //壓縮包路徑
      String str1 = "測試test123abc";                      //需要寫入的數據
      String str2 = "測試2";
      String Name1 = StringUtils.join("文件.json");      //壓縮包里的文件
      String Name2 = StringUtils.join("file/文件1.json");  //在壓縮包里創(chuàng)建file目錄下的文件
      //創(chuàng)建壓縮包
      ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPath));
      //創(chuàng)建壓縮包里的文件
      zipOutputStream.putNextEntry(new ZipEntry(Name1));
      byte[] bytes1 = str1.getBytes(StandardCharsets.UTF_8);
      zipOutputStream.write(bytes1, 0, bytes1.length);    //將數據寫入到壓縮包里的文件里面
      zipOutputStream.closeEntry();

      zipOutputStream.putNextEntry(new ZipEntry(Name2));
      byte[] bytes2 = str2.getBytes(StandardCharsets.UTF_8);
      zipOutputStream.write(bytes2, 0, bytes2.length);

      zipOutputStream.closeEntry();

      zipOutputStream.flush();
      zipOutputStream.close();
  }

上述是直接將String類型數據轉換成byte數組,導入到壓縮包內,形成兩個文件:

file文件夾里面是文件1.json,里面的內容是“測試2”,文件.json的內容則是“測試test123abc”。

Java怎么實現創(chuàng)建Zip壓縮包并寫入文件

關于Java怎么實現創(chuàng)建Zip壓縮包并寫入文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI