以json格式将对象写入zip文件

问题描述 投票:0回答:2

我的目标是以json格式将对象写入zip文件。最简单的方法是:

ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
String json = gson.toJson(object);
zip.write(json.getBytes());

但我想避免将整个对象加载到单个字符串。所以我将一个zip流包装到一个writer对象中:

Writer writer = new OutputStreamWriter(zip);

之后我按以下方式编写条目:

zip.putNextEntry(entry);
gson.toJson(content, writer);
writer.flush();
zip.closeEntry();
zip.flush();

它工作正常,但同时使用writer和zip对象似乎非常混乱。有没有更好的解决方案来解决这个问题?

java json gson writer zipoutputstream
2个回答
0
投票

你可以让Jackson更简单一些,它有直接写入qazxsw poi的方法

OutputStream

0
投票

您可以在ObjectMapper mapper = new ObjectMapper(); try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))){ out.putNextEntry(new ZipEntry("object.json")); mapper.writeValue(out, object); } 语句中声明一个或多个资源。例如

try-with-resources

close方法按此顺序自动调用。请注意,资源的close方法按其创建的相反顺序调用。关于冲洗,try ( ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile))); Writer writer = new OutputStreamWriter(zip); ) { zip.putNextEntry(entry); gson.toJson(content, writer); }

public abstract void close()抛出IOException

关闭流,先冲洗它。关闭流后,进一步的write()或flush()调用将导致抛出IOException。关闭先前关闭的流无效。

© www.soinside.com 2019 - 2024. All rights reserved.