当前位置: 首页 > 知识库问答 >
问题:

压缩(zip)ZipOutPutStream文件列表Java

燕超
2023-03-14

我试图压缩字符串上转换的Xml列表,将它们保存在一个zip文件中,并在restful上作为POST的主体返回。但是每次我保存文件时,都会出现错误“存档格式未知或损坏”。

protected ByteArrayOutputStream zip(Map<String, String> mapConvertedXml) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ZipOutputStream zos = new ZipOutputStream(baos);
    try {
        for(Map.Entry<String, String> current : mapConvertedXml.entrySet()){

            ZipEntry entry = new ZipEntry(current.getKey() + ".xml");
            entry.setSize(current.getValue().length());
            zos.putNextEntry(entry);
            zos.write(current.getValue().getBytes());
            zos.flush();
        }

        zos.close();

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    return baos;
}

有人能帮我吗?

共有1个答案

云宏儒
2023-03-14

要测试zip文件,请将其临时保存在文件系统中并手动打开。

FileOutputStream fos = new FileOutputStream(pathToZipFile);
ZipOutputStream zos = new ZipOutputStream(fos);

然后,您可以使用类似的方法构建Rest服务器并返回文件。

public static Response getFileLast(@Context UriInfo ui, @Context HttpHeaders hh) {
    Response response = null;
    byte[] sucess = null;
    ByteArrayOutputStream baos = getYourFile();
    sucess = baos.toByteArray();
    if(sucess!=null) {
        response = Response.ok(sucess, MediaType.APPLICATION_OCTET_STREAM).header("content-disposition","attachment; filename = YourFileName").build();
    } else {
        response = Response.status(Status.NOT_FOUND).type(MediaType.APPLICATION_JSON).entity(new Error("Error downloading file.")).build();
    }

    return response;
}

例如,您可以测试这个高级Rest客户端。

 类似资料:
  • 本文向大家介绍Python压缩解压缩zip文件及破解zip文件密码的方法,包括了Python压缩解压缩zip文件及破解zip文件密码的方法的使用技巧和注意事项,需要的朋友参考一下 python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件: 将 readability 目录中的文件压缩到脚本所在目录的 readability.zip

  • 问题内容: 当我做的时候,我看到 我只想查看文件名。我尝试这个 但我认为分隔符并不公正。 问题答案: 假设所有文件的名称中都没有空格: 我的解压缩输出同时具有页眉和页脚,因此awk脚本变为: 处理带空格的文件名的版本:

  • 写压缩文件 # gzip_write.py import gzip import io import os outfilename = 'example.txt.gz' with gzip.open(outfilename, 'wb') as output: with io.TextIOWrapper(output, encoding='utf-8') as enc: e

  • 我在下面找到了这个脚本,但它对我不起作用,因为我的文件有空间,而且我在一个zip文件中有多个文件。 请救命!谢谢你

  • 我正在尝试创建一个zip文件,以便能够通过http发送多个文件。 我的问题是,生成的Zip文件在发送之前和之后都“损坏”。问题是我无法找到我做错了什么,因为我在控制台中没有收到任何错误。 那么,有人有一个想法文件我生成的zip文件损坏? 这是我的代码: 谢谢你的帮助!

  • 问题内容: 我正在尝试解压缩一些zip文件,它的大小约为65兆。下面的代码段: 此方法实际上将文件解压缩: 那个执行者/未来的东西只是为了确保我正确地做。在类Finder中调用此方法,该类在目录中查找zip文件并尝试将其解压缩。它基于此代码http://docs.oracle.com/javase/tutorial/essential/io/walk.html 具体来说: 现在的问题。真的很有趣。