GridFS 存储 GZIPOutputStream
GridFS Storage GZIPOutputStream
我希望将我的文件存储得尽可能小。所以我决定压缩我的 json 文件。我目前正在使用我的方法创建 gzip 文件,上传 mongodb 并删除文件夹中的文件,但我注意到 gridfs 具有将输入流保存到数据库的功能。
我的问题
- 我应该使用上面提到的当前顺序还是 gridfs 上传流功能?
- 为较小的数据大小制作文件 gzip 是好的解决方案吗?
如果我的所有问题的答案都是肯定的。我想知道如何使用 GridFS Inputstream 并将我的 gzip 代码转换为 gridfs。
当前代码
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();
}
经过一些搜索和尝试,我学会了如何正确使用它而不使用我的文件夹数据。我想与搜索该代码的人分享我的示例代码。
这是示例代码
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);
我希望将我的文件存储得尽可能小。所以我决定压缩我的 json 文件。我目前正在使用我的方法创建 gzip 文件,上传 mongodb 并删除文件夹中的文件,但我注意到 gridfs 具有将输入流保存到数据库的功能。
我的问题
- 我应该使用上面提到的当前顺序还是 gridfs 上传流功能?
- 为较小的数据大小制作文件 gzip 是好的解决方案吗?
如果我的所有问题的答案都是肯定的。我想知道如何使用 GridFS Inputstream 并将我的 gzip 代码转换为 gridfs。
当前代码
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();
}
经过一些搜索和尝试,我学会了如何正确使用它而不使用我的文件夹数据。我想与搜索该代码的人分享我的示例代码。
这是示例代码
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);