以json格式将对象写入zip文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以json格式将对象写入zip文件相关的知识,希望对你有一定的参考价值。
我的目标是以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对象似乎非常混乱。有没有更好的解决方案来解决这个问题?
你可以让Jackson更简单一些,它有直接写入qazxsw poi的方法
OutputStream
您可以在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。关闭先前关闭的流无效。
以上是关于以json格式将对象写入zip文件的主要内容,如果未能解决你的问题,请参考以下文章