Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将base64解码字符串保存到zip文件中_Java_String_Zip_Base64_Decode - Fatal编程技术网

Java 将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中的代码。当我

我正在尝试使用上述代码将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中的代码。当我试图打开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上运行