Zip压缩文件工具类

初衷

为了简化Java操作zip实现读取和写入,同时为了自己更加熟悉zip的用法,故此写一个自定义工具类,一方面供大家使用,另一方面也是作为学习笔记记录下来。

反序列化zip文件

	/**
     * 反序列化zip文件
     * @param path
     * @return
     * @throws IOException
     */
    public static Map<String, byte[]> deserial(String path) throws IOException {
        ZipEntry nextEntry;
        Map<String, byte[]> map = new LinkedHashMap<>();
        try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(path))) {
            while ((nextEntry = zipInputStream.getNextEntry()) != null) {
                String fileName = nextEntry.getName();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int length;
                while ((length = zipInputStream.read(buffer)) > 0) {
                    baos.write(buffer, 0, length);
                }
                map.put(fileName, baos.toByteArray());
                zipInputStream.closeEntry();
            }
            return map;
        }
    }

序列化zip文件

	/**
     * 序列化zip文件
     * @param path
     * @param data
     * @throws IOException
     */
    public static void serial(String path, Map<String, byte[]> data) throws IOException {
        try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(path))) {
            for (Map.Entry<String, byte[]> entry : data.entrySet()) {
                zipOutputStream.putNextEntry(new ZipEntry(entry.getKey()));
                zipOutputStream.write(entry.getValue());
                zipOutputStream.closeEntry();
            }
        }
    }

奇怪的是,对于我另外一篇博客ZipOutputStream中报错System Closed中的关于流自动关闭的问题,这里没有遇到,也不知道什么原因,希望知道的大佬提点一二

追述,关于System Closed的问题,是在使用jackson实现序列化时才会出现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SenKnight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值