将base64解码后的字符串保存到zip文件中

时间:2015-06-16 13:11:06

标签: java string zip base64 decode

我正在尝试使用上面提到的代码将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或者我是否需要修改代码?

2 个答案:

答案 0 :(得分:0)

那不会奏效。您正在写入普通文件而不打包内容。将java zip库与ZipOutputStreamZipEntry等一起使用。

答案 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();
    }
}