我正在用Java生成一个zip文件,其中包含文本和图像文件的混合,这在一台计算机上可以正常工作,但在另一台计算机上我的图像文件已损坏(相同的Java版本和OS);生成的文件大小相同,但无法在图像编辑器/查看器中打开图像,文本文件也可以。
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos);
zos.setMethod(ZipOutputStream.DEFLATED);
addZipEntry(zos, "/forms/images/calendar.gif", "images/calendar.gif");
addZipEntry(zos, "/forms/templ/header.php", "templ/header.php");
zos.close();
private void addZipEntry(ZipOutputStream zos, String resourcePath, String entryName) throws IOException {
ClassLoader cl = getClass().getClassLoader();
InputStream is = cl.getResourceAsStream(resourcePath);
zos.putNextEntry(new ZipEntry(entryName));
zos.write(IOUtils.toByteArray(is));
zos.closeEntry();
}
有什么想法为什么图像被损坏?
Here's a visual binary comparison between a corrupt image and the original.
最佳答案
似乎您用来提取ZIP文件的工具将图像视为ASCII文本,将大于或等于0x80的任何值替换为未知字符,将其替换为问号(0x3F)。
关于java - 为什么我的zip文件中的图像损坏了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7684820/