我正在尝试使用上面提到的代码将base64解码的字符串保存到zip文件中:
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/home/wemohamm/Desktop/test.zip")));
out.write(decodedString);
out.close();
这里decodedString
包含base64解码字符串,我可以输出它。
我正在使用Java 1.6在rhel6中运行代码。当我尝试打开zip时,它表示打开文件时出错。
如果我使用带有路径c:\\test\test.zip
的Windows 7 Java 1.6,那么相同的代码工作正常。
在rhel6中是否未正确保存zip或者我是否需要修改代码?
答案 0 :(得分:0)
那不会奏效。您正在写入普通文件而不打包内容。将java zip库与ZipOutputStream
,ZipEntry
等一起使用。
答案 1 :(得分:0)
不要从字节数组(String decodedString = new String(byteArray);
)创建一个字符串,然后使用OutputStreamWriter
来编写字符串,因为这样你就有可能引入与平台相关的编码问题
只需使用FileOutputStream
将字节数组(byte[] byteArray
)直接写入文件。
类似的东西:
try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("/home/wemohamm/Desktop/test.zip"), 4096)) {
out.write(byteArray);
}
实际上,由于新的try-with-resources
语句,上述内容需要java 1.7+。
对于Java 1.6,您可以这样做:
BufferedOutputStream out = null;
try {
out = new BufferedOutputStream(new FileOutputStream("/home/wemohamm/Desktop/test.zip"), 4096);
out.write(byteArray);
} finally {
if (out != null) {
out.close();
}
}