Java 将base64解码字符串保存到zip文件中
我正在尝试使用上述代码将base64解码字符串保存到zip文件中:Java 将base64解码字符串保存到zip文件中,java,string,zip,base64,decode,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解码字符串,我可以输出它。 我正在用Java1.6运行rhel6中的代码。当我
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/home/wemohamm/Desktop/test.zip")));
out.write(decodedString);
out.close();
这里decodedString
包含base64解码字符串,我可以输出它。
我正在用Java1.6运行rhel6中的代码。当我试图打开zip时,它说打开文件时出错
如果我在Windows 7 Java 1.6中使用路径c:\\test\test.zip
时使用相同的代码,则可以正常工作
在rhel6中是否没有正确保存zip,或者是否需要修改代码 那不行。您正在写入一个普通文件,而没有打包内容。将java zip库与
ZipOutputStream
、ZipEntry
等一起使用 不要从字节数组中创建字符串(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
语句,上面的代码需要Java1.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();
}
}
为什么不使用ZipEntry用java创建一个正确的zip文件呢?对象decodedString实际上是一个base64解码字符串。我不知道如何将其保存为zip。顺便说一句,上面的方法在windows中运行良好。如果有错误或需要修改,请共享它。您不创建zip存档,而是创建一个文件并命名。zip使用@Andrew s链接。实际上,这里的解码是一个zip文件流。为什么要压缩一个已经压缩的流呢?我正在使用jre 1.6,eclipse指出了错误,并建议改为jre1.7,但我做不到,因为这段代码要在jre 1.6上运行