首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GridFS存储GZIPOutputStream

GridFS存储GZIPOutputStream
EN

Stack Overflow用户
提问于 2020-05-14 06:25:15
回答 1查看 105关注 0票数 0

我想把我的文件保存得尽可能小。所以我决定把我的json文件压缩。我目前使用的方法是在文件夹中创建gzip文件、上传mongodb和删除文件,但我注意到gridfs具有将输入流保存到数据库的功能。

我的问题

  1. 是像上面提到的那样使用当前顺序还是gridfs上传流功能?
  2. 是更小数据大小的文件gzip的好解决方案吗?

如果我所有的问题都能回答的话。我想知道如何使用gridfs Inputstream并将我的gzip代码转换为GridFS。

电流码

代码语言:javascript
运行
复制
try {
    GZIPOutputStream gzip = new GZIPOutputStream(new FileOutputStream("pdiskio.dsv"));
    OutputStreamWriter osw = new OutputStreamWriter(gzip, StandardCharsets.UTF_8);
    osw.write(saves.toJSONString());
    osw.close();
} catch (IOException e) {
    e.printStackTrace();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 07:00:22

经过一些搜索和尝试,我学会了如何正确地使用它,而不用我的文件夹数据。我想分享我的示例代码,然后是搜索它的人。

这里是示例代码

代码语言:javascript
运行
复制
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    GZIPOutputStream gzip = new GZIPOutputStream(byteArrayOutputStream);
    gzip.write(saves.toJSONString().getBytes(StandardCharsets.UTF_8));
    gzip.close();

    GridFSBucket gridFSFilesBucket = GridFSBuckets.create(database, "pdisks");
    GridFSUploadOptions options = new GridFSUploadOptions()
            .metadata(new Document("metadataValue", "test-value"));

    InputStream ff = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    ObjectId fileId = gridFSFilesBucket.uploadFromStream(minewatchSaveManager.getId(), ff, options);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61790660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档