java - 使用 Java 将 2 个文件添加到 zip 存档

标签 java

我需要使用 java 将 2 个文件放入一个 zip 存档中。我使用以下代码,它适用于一个文件。当我用两个文件调用该方法时,它不会抛出任何异常,但结果我损坏了文件

    private File createZipFile(File[] files) throws IOException {

        File zipFile = new File("D:\\zip.zip");

        FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
        ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(fileOutputStream));

        for (File file: files) {
            BufferedInputStream bufferedInputStream = null;
            byte data[] = new byte[1024];
            FileInputStream fileInputStream = new FileInputStream(file.getAbsolutePath());
            bufferedInputStream = new BufferedInputStream(fileInputStream, 1024);

            ZipEntry entry = new ZipEntry(file.getName());
            zipOutputStream.putNextEntry(entry);
            int count;
            while ((count = bufferedInputStream.read(data, 0, 1024)) != -1) {
                zipOutputStream.write(data, 0, count);
            }
            bufferedInputStream.close();
            fileInputStream.close();
        }

        zipOutputStream.close();

        return zipFile;
    }

最佳答案

看起来您在循环结束时缺少 zipOutputStream.closeEntry()

关于java - 使用 Java 将 2 个文件添加到 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503998/

相关文章:

java - 获取 onVisibilityChange ActionListener

java - Hibernate 查询返回等于值的列表

java - Eclipse java 调试器突然停止工作?

java - 如何在 Java 中以 UTC 或 GMT 格式获取当前日期和时间?

java - 使用多显示器进行空白组件渲染

java - 为什么图片下方没有显示文字?

java - 如何按字母顺序对字符串的 ArrayList 进行排序?

java - LinkedList 对象如何使用 Syso 输出内容?

java - 在java中为两个不同的类创建对象会引发StackOverflow

java - -> 运算符在 grails 中的含义和用法是什么?