我有一个非常大的文本文件(大约850万行,1 GB),由地理信息组成(Geoname Project,对于任何听说过它的人)。目前我正在使用BufferedReader并且发现我的程序可以舒适地读取10000行并显示一些所需的数据而不会有太多停顿。但是,我必须读取并搜索整个文件中的每一行,并且一旦我用超过50000行测试它,程序变得非常慢并且基本上没用。有哪些选项可以将文件分割并以块的形式读取,从而缩短执行时间?
答案 0 :(得分:-1)
阅读java.nio.Buffer类及其子类。特别要注意直接和非直接的缓冲以及它们的用法的利弊。直接缓冲区提供对磁盘的直接访问,并能够以非常快的速度处理非常大的文件。但是这种强大的能力伴随着一些价格和内存泄漏的风险。但我认为这就是你可能需要的。从这里开始阅读:https://docs.oracle.com/javase/8/docs/api/java/nio/Buffer.html