如果你使用的是RandomAccessFile ,你可以使用length和seek来到达文件末尾的特定点,然后从那里读取。
如果发现没有足够的线条,请从这一点开始备份并重试。 一旦你知道了第N行的起始位置,你就可以到那里去阅读和打印。
根据您的数据属性可以进行最初的猜测。 例如,如果是文本文件,则行长度可能不会超过平均值132,因此,要获取最后五行,请在结束之前启动660个字符。 那么,如果你错了,就试试1320(甚至可以使用你从最后660个字符中学到的东西来调整 – 例如:如果这660个字符只是三行,下一个尝试可能是660/3 * 5,加上也许多一点,以防万一)。
我发现这是通过使用Apache Commons-io api中的ReversedLinesFileReader来完成的最简单的方法。 这个方法会给你从文件的底部到顶部的行,你可以指定n_lines值来指定行数。
import org.apache.commons.io.input.ReversedLinesFileReader; File file = new File("D:\\file_name.xml"); int n_lines = 10; int counter = 0; ReversedLinesFileReader object = new ReversedLinesFileReader(file); while(!object.readLine().isEmpty() && counter < n_lines) { System.out.println(object.readLine()); counter++; }
RandomAccessFile是一个很好的开始,正如其他答案所描述的。 有一个重要的警告&#x