如何在java中以自下而上的方式阅读文本文件?

时间:2014-02-17 22:18:50

标签: java bufferedreader

我正在尝试将日志结构文件系统实现为操作系统分配。其中最新的数据放在文件末尾。这就是为什么我想在反向顺序中阅读文本文件“逐行”。有可能吗?

3 个答案:

答案 0 :(得分:3)

查看ReverseLineInputStream:

https://code.google.com/p/lt2-sander-marco/source/browse/src/leertaak2/ReverseLineInputStream.java?spec=svn15&r=15

它指的是How to read file from end to start (in reverse order) in Java?

上发布的SO问题
in = new BufferedReader (new InputStreamReader (new ReverseLineInputStream(file)));

while(true) {
    String line = in.readLine();
    if (line == null) {
        break;
    }
    System.out.println("X:" + line);
}

(谢谢,@ Mark O'Donohue)

答案 1 :(得分:1)

如果逐行 - 你可以将所有行传递给一个arraylist,然后使用反向for循环读取背景,例如for(int i = list.size()-1;i>=0;i--)

答案 2 :(得分:-1)

是的,但它需要先读取整个文件。如果文件很长,您可以做的是将文件拆分成几个文件,将每个文件读入内存并将数据写入从最后一行到旧文件第一行的新文件。操作完成后,您可以删除您创建的所有临时文件。