Java導出zip壓縮包

使用Java導出zip壓縮包,壓縮包中包含一個文件夾和一個文件,其中文件夾包含另一個文件。
在這裏插入圖片描述
代碼:

package com.sunshuo.start;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

public class MainTest {

    public static void main(String[] args) {
        doExport();
    }

    private static void doExport() {
        String path = "D:\\tempfolder\\zip_outer\\";
        
        File file = new File(path);
        if(!file.exists()){
            file.mkdirs();
        }
        
        File zipFile = null;
        FileOutputStream fos = null; 
        ZipOutputStream zos = null; 
        
        try {
            // 壓縮包名
            Date currentTime = new Date();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
            String dateString = formatter.format(currentTime);
            zipFile = new File(path + "sunshuo_" + dateString + ".zip");
            zipFile.createNewFile();
            fos = new FileOutputStream(zipFile);
            zos = new ZipOutputStream(fos);
            zos.setEncoding("GBK"); // 防止壓縮包裏文件名亂碼
            
            // 文件01,在文件夾01裏
            String file01Name = "文件夾01\\文件01.txt";
            ZipEntry zipEntry1 = new ZipEntry(file01Name); 
            zos.putNextEntry(zipEntry1);
            String content1 = "文件內容1111";
            zos.write(content1.getBytes("UTF-8"));
            
            // 文件02,在根目錄下
            String file02Name = "文件02.txt";
            ZipEntry zipEntry2 = new ZipEntry(file02Name); 
            zos.putNextEntry(zipEntry2);
            String content2 = "文件內容2222";
            zos.write(content2.getBytes("UTF-8"));

            zos.flush();
            zos.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(fos != null){
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

總結點:
1)如果想把文件放入到zip包裏目錄中,可以使用拼接路徑的方式。比如文件01。
2)如果壓縮包中的文件名亂碼,可以使用zos.setEncoding(“GBK”); 方式解決。
3)zos.setEncoding(“GBK”);中,ZipOutputStream的全路徑是org.apache.tools.zip.ZipOutputStream,ZipEntry的全路徑是org.apache.tools.zip.ZipEntry,需要藉助第三方的包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章