SS980813 2021-05-19 17:40 采纳率: 33.3%
浏览 17

java 讲文件打成压缩包

用以下代码将文件打成压缩包后,文件大小是0kb,因此我认为文件内容并未写入成功。却又找不到原因。麻烦各位大佬帮忙看看。

/**
     * 把文件集合打成zip压缩包
     *
     * @param srcFiles 压缩文件集合
     * @param zipFile  zip文件名
     * @throws RuntimeException 异常
     */
    public static void toZip(List<File> srcFiles, File zipFile) throws RuntimeException {
        long start = System.currentTimeMillis();

        if (zipFile == null) {
            log.error("压缩包文件名为空!");
            return;
        }
        if (!zipFile.getName().endsWith(".zip")) {
            log.error("压缩包文件名异常,zipFile={}", zipFile.getPath());
            return;
        }
        ZipOutputStream zos = null;
        try {
            FileOutputStream out = new FileOutputStream(zipFile);
            zos = new ZipOutputStream(out);
            for (File srcFile : srcFiles) {
                zos.putNextEntry(new ZipEntry(srcFile.getName()));
                FileInputStream in = new FileInputStream(srcFile);
                byte[] bytes = Files.readAllBytes(Paths.get(srcFile.getPath()));
                zos.write(bytes, 0, bytes.length);
                zos.flush();
                zos.closeEntry();
                in.close();
                out.flush();
                out.close();
            }

            long end = System.currentTimeMillis();

            log.info("压缩完成,耗时:" + (end - start) + " ms");

        } catch (Exception e) {
            log.error("ZipUtil toZip exception, ", e);

            throw new RuntimeException("zipFile error from ZipUtils", e);

        }

    }
  • 写回答

1条回答 默认 最新

  • 关注

    byte[] bytes = Files.readAllBytes(Paths.get(srcFile.getPath()));

    这个有问题,要用循环分片读取。

    评论

报告相同问题?

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型