如何在Java中用BufferedOutputStream序列化HashMap



我有一个非常大的格式为HashMap<String, List<String>>的HashMap,我想使用BufferedOutputStream序列化它,因为我认为它将比使用常规OutputStream更高效。

但是,如何将HashMap划分为缓冲区大小的块呢?我应该只遍历HashMap吗?

如果计划写入本地文件,则需要链接FileOutputStreamBufferedOutputStreamObjectOutputStream。使用以下设置,BufferedOutputStream应使用8192字节的默认缓冲区来最大限度地减少对文件系统的直接写入。

Map<String, List<String>> data = new HashMap<>();
data.put("myKey", List.of("A", "B", "C"));
File outFile = new File("out.bin");
try (FileOutputStream fos = new FileOutputStream(outFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(data);
oos.flush();
}

除非输出文件太大,否则不需要进一步分块。

相关内容

  • 没有找到相关文章

最新更新