是否可以使用BufferedReader反转文件的每一行?

时间:2012-04-27 11:48:51

标签: java bufferedreader

假设我正在导入包含行的文件。我想通过递归输出序列的尾部,然后是序列的头部来反转这个文件。这可能使用BufferedReader吗?或者我首先需要将这些行导入列表?我必须用递归来做。

例如,我有一个包含以下内容的文件:

Hi
My
Name
Is
Mark

我希望它在另一个文件中以相反的顺序输出:

Mark
Is
Name
My
Hi

我认为我已经正确地创建了递归方法,虽然它编译得很好,但是在程序运行后输出文件是空的。

public void Reverse(BufferedReader br, PrintWriter pw) {
    try {
        String headLine = br.readLine();
        if (headLine != null) {
            Reverse(br, pw);
            pw.println(br.readLine());
        }
        pw.println(headLine);      
    } //try

3 个答案:

答案 0 :(得分:2)

  

必须使用递归

这是一个递归解决方案:

  1. 从文件中读取一行;
  2. 以递归方式反转文件的其余部分;
  3. 写出步骤1中读取的行。
  4. 由于这是作业,我留给你了解如何将其转换为实际的Java代码。

答案 1 :(得分:1)

而不是直接给你解决方案,你可能不想在头尾方面考虑这个问题。从线条的角度考虑它,然后阅读答案和讨论this SO question。您可以应用相同的技术。

答案 2 :(得分:0)

一定要将所有内容读入LinkedList,然后在其上抛出递归。只有,Collection Framework对于这类工作来说非常麻烦。