Java:读取巨大文件的最后n行
我想读取一个非常大的文件的最后n行,而不使用Java将整个文件读入任何缓冲区/内存区域。
我环顾了JDK API和Apache Commons I / O,但无法找到适合此目的的一个。
我在想UNIX中使用tail或更少的方式。我认为他们不会加载整个文件,然后显示文件的最后几行。在Java中也应该有类似的方法。
回答:
如果使用RandomAccessFile
,则可以使用length
和seek
到达文件末尾附近的特定点,然后从那里开始读取。
如果发现行数不足,请从该点备份,然后重试。一旦确定了N
最后一行的开始位置,就可以找到该位置并进行读取和打印。
可以根据您的数据属性做出初步的最佳假设。例如,如果它是一个文本文件,则行长平均可能不超过132,因此,要获取最后五行,请在末尾开始660个字符。然后,如果输入错了,请在1320处再试一次(您甚至可以使用从最后660个字符中学到的信息来调整该值-
例如:如果这660个字符仅是三行,则下一次尝试可能是660/3 * 5加上一些额外的以防万一)。
以上是 Java:读取巨大文件的最后n行 的全部内容, 来源链接: utcz.com/qa/424976.html