[英]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的行。
我正在尝试使用RandomAccessFile
, LineIterator
和经典的BufferedReader
方法,但是这些方法似乎并不是很好的解决方案。
提前致谢。
如果您的文件没有严格的结构(如Martijn注意的那样,每行或每个逻辑块的字符数固定),那么您将无法使用RandomAccessFile的优势。
在这种情况下,您可以尝试将巨大的文件拆分为较小的文件,每个文件具有固定的行数(例如1000)。 在这种情况下,当用户希望查看从1800到2100的行时,您只需读取2个文件(如果说总大小约为400 Mb,则可能是几千个文件)。
如果您不能做到这一点,那么您唯一可以做的就是使用NIO至少提高一点性能。
在类似情况下,其他人建议将文件存储在数据库中。 例如,将每一行作为单独的记录。 然后,无论从哪个方向读取数据,无论是大块还是小块,都容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.