一尘不染

读取Java中的大文件

java

我需要非常了解Java和内存问题的人的建议。我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件)。

我通常知道如何做到这一点(使用BufferedReader),但是我想知道你是否对内存有任何建议,或者提示如何更快地做到这一点。

我的文件包含文本,它不是二进制文件,每行大约有20个字符。


阅读 451

收藏
2020-03-15

共1个答案

一尘不染

首先,如果你的文件包含二进制数据,则使用BufferedReader将是一个大错误(因为你会将数据转换为String,这是不必要的,并且很容易破坏数据);你应该BufferedInputStream改用。如果它是文本数据,并且需要沿换行符进行拆分,则使用BufferedReader OK(假定文件包含合理长度的行)。

关于内存,如果你使用大小合适的缓冲区,应该没有任何问题(我将至少使用1MB的内存来确保HD主要执行顺序读取和写入操作)。

如果发现速度有问题,你可以看看这些java.nio包装-据说它们比java.io

2020-03-15