繁体   English   中英

如何使用Java在两个方向上读取很大文本文件的n行块

[英]How to read a block of n lines of a very big text file in both directions, using Java

我需要读取一个非常大的日志文件(大约400MB),并在文本区域中显示其内容。

显然,由于其尺寸,我无法首先读取整个文件,因此我正在寻找一种方法,该方法可以读取前n行(或字节的一部分),然后在被询问时开始读取接下来的n行,并且以此类推。 该方法需要在两个方向上起作用:即,如果显示了从1000到1500的行并且用户想要回读,则我必须显示从500到1000的行。

我正在尝试使用RandomAccessFileLineIterator和经典的BufferedReader方法,但是这些方法似乎并不是很好的解决方案。

提前致谢。

如果您的文件没有严格的结构(如Martijn注意的那样,每行或每个逻辑块的字符数固定),那么您将无法使用RandomAccessFile的优势。

在这种情况下,您可以尝试将巨大的文件拆分为较小的文件,每个文件具有固定的行数(例如1000)。 在这种情况下,当用户希望查看从1800到2100的行时,您只需读取2个文件(如果说总大小约为400 Mb,则可能是几千个文件)。

如果您不能做到这一点,那么您唯一可以做的就是使用NIO至少提高一点性能。

在类似情况下,其他人建议将文件存储在数据库中。 例如,将每一行作为单独的记录。 然后,无论从哪个方向读取数据,无论是大块还是小块,都容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM