在Java中,读取文本文件最后一行的最佳方法是什么?

5

我想在Java中获取普通文本文件的最后一行时感到困惑。我该如何做?而且如果不使用scanner,哪种方法是最好的?

谢谢


1
可能重复的问题 https://dev59.com/YnRB5IYBdhLWcg3wN1AQ - Massimiliano Peluso
2个回答

8

最简单的方法是遍历文件中的每一行,当到达文件末尾时停止。例如:

// I assume this is disposed properly etc
private static String getLastLine(BufferedReader reader) throws IOException {
    String line = null;
    String nextLine;
    while ((nextLine = reader.readLine()) != null) {
        line = nextLine;
    }
    return line;
}

对于空的读取器,这将返回null。

除非我知道我要读一个真的很大的文件,否则我会这么做。尝试直接跳转到最后一行是困难的。真的很困难,特别是如果你需要一个可变宽度编码,如UTF-8。


就像许多事情一样,除非你已经确定了需要改进的可量化原因,否则最简单的方法是最好的。 - corsiKa

3
你可以使用RandomAccessFile类: 1. 定位到文件末尾(new File("your_file").length()) 2. 循环读取字符并使用随机访问文件的seek方法。 3. 当你看到"\n"(或者在你系统中是什么)时停止。 4. 从你停止的位置重新读取文件直到文件结束。
如果你已经记住了你已经读过的内容,这一步是可选的。
只需谷歌搜索RandomAccessFile示例即可。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接