我得到了一个快速的数据流(对象),我想把它写到一个文件中
这是一个独立的过程,所以它什么都不做,只是从套接字读取数据,将其解析为csv,并将所有数据写入文件。
向文件中写入大量csv行的最佳方式是什么
缓冲区正在写入我的解决方案吗
Java中是否有缓冲的File对象
我应该自己管理它并使用writeLines()吗?
在文本文件Java 中写入大量数据的最快方法
如果您正在处理巨大的数据吞吐量,那么我建议您使用一组内存缓冲区,将到达的数据存放在其中,然后使用一个线程/线程池,使用Java NIO"消耗"这些缓冲区并将其写入磁盘。然而,您将受到磁盘写入速度的限制——请记住,网络速度比硬盘速度快并不罕见!因此,您可能需要考虑一个线程池,它在不同的物理位置进行写入,并在接收和写入所有数据后才"粘贴"这些文件。
如上所述,限制您的可能是磁盘I/O,而不是Java抽象。
但是,除了使用一个好的lib来处理CSV之外,您还可以考虑使用其他(甚至更)高效的格式,如JSON;以及压缩。GZIP擅长压缩事物,但速度相对较慢;但也有更快的。例如,LZF(像这个Java实现一样)足够快,可以以比典型磁盘I/O更高的速度进行压缩(解压缩速度甚至更快)。因此,压缩输出可以很好地提高吞吐量并减少磁盘使用量。