java中将多文件字节流压缩成zip

news/2024/7/6 3:04:21 标签: java, zip, csv, jdk, linux

java中将多文件字节流压缩成zip">java中将多文件字节流压缩成zip

  • 核心就是使用java.util.zip包中的ZipOutputStream

  • 直接上核心代码

java">/**
     *
     * @param zipFilePath zip保存路径
     * @param zipFileName zip文件名
     * @param byteList 文件字节码Map,k:fileName,v:byte[]
     */
public static void zipFile(String zipFilePath, String zipFileName, Map<String, byte[]> byteList) {
	//如果文件夹不存在就创建文件夹,防止报错
        File file = new File(zipFilePath);
        if (!file.exists() && !file.isDirectory()) {
            LOGGER.warn("文件夹不存在,创建新文件夹!");
            file.mkdirs();
        }

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(String.format("%s%s%s", zipFilePath, zipFileName, ".zip"));
            ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
            byteList.forEach((k, v) -> {
                //写入一个条目,我们需要给这个条目起个名字,相当于起一个文件名称
                try {
                    zipOutputStream.putNextEntry(new ZipEntry(k));
                    zipOutputStream.write(v);
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.print("写入文件失败");
                }
            });
            //关闭条目
            zipOutputStream.closeEntry();
            zipOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.print("压缩文件失败");
        }
    }
  • 调用方法
java">Map<String, byte[]> byteFileMap = new HashMap<>();
byteFileMap.put(“testfile.txt”, "我是文件内容".getBytes());
String zipFileName = LocalDateTime.now();
String zipFilePath = "/opt/user/"
ZipUtils.zipFile(zipFilePath, zipFileName, byteFileMap);

Q.E.D.


http://www.niftyadmin.cn/n/748008.html

相关文章

Map中的key和Set中的元素对象必须重写equals和hashCode方法

【强制】关于hashCode和equals的处理&#xff0c;遵循如下规则&#xff1a; 1&#xff09; 只要重写 equals&#xff0c;就必须重写hashCode。 2&#xff09; 因为 Set存储的是不重复的对象&#xff0c;依据 hashCode和equals进行判断&#xff0c;所以 Set存储的 对象必须重写这…

ssh执行非交互式命令

如果你想用脚本自动化登录到某台机子上&#xff0c;然后在上边执行个命令&#xff0c;怎么办呢&#xff1f; 可以使用ssh的非交互式命令 ssh zhchongchangfirst.com "/home/hczhang/bin/build.sh" 这里可以用expect模拟键盘输入将密码输入&#xff0c;也可以用无密…

Windows中IIS Express配置允许局域网访问

Windows中IIS Express配置允许局域网访问 开发环境&#xff1a;VS2019、Win10家庭版 今天考虑跟前端连调代码时候发现&#xff0c;IIS Express默认配置竟然是不支持局域网访问的&#xff0c;甚至127.0.0.1都不支持&#xff0c;仅支持localhost访问&#xff0c;查找了下相关文档…

ASP.NET的web程序无法打开系统exe应用的问题-配置DCOM

ASP.NET的web程序无法打开系统exe应用的问题-配置DCOM 场景问题描述&#xff1a;在开发c#的ASP.NET的webapi的时候&#xff0c;有用到调用系统安装的应用exe的场景(可以当做调用excel吧)&#xff0c; 在本地VS2019开发调用时完全无问题&#xff0c;但是发包IIS调用却始终不出来…

ssh出现connection timeout

有时候ssh到一个机子的时候&#xff0c;等了一会儿&#xff0c;出现connection timeout&#xff0c;但是并不清楚到底是哪里出错了。 我们可以有几个好的办法确定是哪里出了问题。 第一&#xff0c;先ping你的机子&#xff0c;如果不能ping通&#xff0c;考虑网络是否是断的。…

数据同步的利器 - rsync

如果我们想在两台机器之间同步数据&#xff0c;怎么办呢&#xff1f; 可以用rsync&#xff0c;remote synchronize。rsync可以增量备份数据&#xff0c;在数据传输的时候只会传输不一样的地方&#xff0c;它利用ssh来传输文件&#xff0c;是一款开源的软件。 rsync分为客户端…