当前位置: 代码迷 >> java >> 递归文件的反向行不适用于我
  详细解决方案

递归文件的反向行不适用于我

热度:105   发布时间:2023-07-18 09:02:04.0

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

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();     
}

我正在使用此文件:
你好
这是中间
这是最重要的

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

我很困惑。 我以前看过这个问题,但所有问题都是“我如何扭转这些行”,答案是“使用递归”,但仍然很抱歉

更新:更改它以解决文件问题:

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

您需要在递归函数之外处理文件,否则在完成之前将其关闭

  相关解决方案