尝试将zip文件内容的String表示保存为Java中的文件

时间:2017-08-08 16:33:40

标签: java string file zip

我有一个zip文件的内容,我从客户端多部分表单数据api收到的存储为String。

我只想将此数据保存为zip文件;但是,当我尝试保存到下面的文件时,当我尝试打开文件时,我收到一条消息说明

" Windows无法打开该文件夹。压缩(压缩)文件夹' C:\ payload.zip'无效。"

public void createFile(String data) {
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter("c:\\payload.zip"));
        out.write(data);   
        out.close();
    }
    catch (IOException e)
    {
        System.out.println("Exception ");

    }
}

我只是将我收到的String传递给上面显示的小测试createFile方法。

我以为我会粘贴下面的实际字符串内容但是当我尝试这样做时它将它转换为此(没有双引号): " PK"

对我做错的任何帮助?

2 个答案:

答案 0 :(得分:1)

您可以使用BufferedWriter创建扩展名为.zip的文件,但不要指望该文件是压缩文件(二进制)

您可以使用以下内容

看看这个例子:

StringBuilder sb = new StringBuilder();
sb.append("your string data");

File f = new File("c:\\payload.zip");
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(f));
ZipEntry e = new ZipEntry("myFile.txt");
out.putNextEntry(e);
byte[] data = sb.toString().getBytes();
out.write(data, 0, data.length);
out.closeEntry();
out.close();

答案 1 :(得分:0)

再次将zip的文本表示保存为zip文件:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                                               new FileOutputStream("c:\\dest.zip"),
                                               "Cp1252"));
writer.write(data);   
writer.close();

或者您可以尝试:

FileOutputStream fos = new FileOutputStream("C:\\dest.zip");
fos.write(data.getBytes());
fos.close();