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,需要借助第三方的包。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值