递归反向行的文件不适合我

时间:2015-07-30 14:56:38

标签: java file recursion

我只想反转文件的行但我无法理解。我以为我会使用递归作为最简单的方法,但它不起作用。这就是我认为我会做的事情。

public void reverseLines(Scanner s, String outputFile) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter(outputFile);
    String st = s.nextLine();
    if(s.hasNextLine()){
        reverseLines(s, outputFile);
    }
    pw.println(st);
    pw.close();     
}

我正在使用这个文件:
你好 这是中间的 这些在顶部

我不断得到这个:
你好    中间

我很困惑。我之前看过这个问题,但所有的问题都是“如何扭转这些问题”,答案是“使用递归”,但仍然对不起要求

1 个答案:

答案 0 :(得分:2)

更新:更改它以修复文件问题:

public static void main(String[] args) {
    // TODO Auto-generated method stub

    File f = new File("D:\\test.txt");

    try {
        PrintWriter pw = new PrintWriter("D:\\test2.txt");
        Scanner s = new Scanner(f);
        reverseLines(s,pw);
        pw.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


public static void reverseLines(Scanner s, PrintWriter pw) throws FileNotFoundException {
    String st = s.nextLine();
    if(s.hasNextLine()){
        reverseLines(s,pw);
    }
    pw.println(st);
    System.out.println(st);  
}

原始档案:

line 1
line 2
line 3

这是控制台输出:

line 3
line 2
line 1

你需要在递归函数之外处理文件,否则你会在它完成之前关闭它