我正在尝试将 zipfile 写入byte[]
内存中,然后将其写入磁盘。生成的 zipfile 已损坏。
这有效:
try (FileOutputStream fos = new FileOutputStream(Files.createTempFile("works", ".zip").toFile());
ZipOutputStream zos = new ZipOutputStream(fos)) {
zos.putNextEntry(new ZipEntry("test.txt"));
zos.write("hello world".getBytes());
zos.closeEntry();
}
这已损坏并创建损坏的 zip 文件:
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos)) {
zos.putNextEntry(new ZipEntry("test.txt"));
zos.write("hello world".getBytes());
zos.closeEntry();
Files.write(Files.createTempFile("broken", ".zip"), bos.toByteArray());
}
为什么第二个不起作用?假设我需要对原始文件进行操作,我该如何修复它byte[]
(我无法将 zip 文件直接创建到文件中,因为我需要它byte[]
用于其他目的)。