问题描述
我只想反转文件的行,但无法弄清楚。 我以为我会使用递归作为最简单的方法,但是它不起作用。 这就是我想做的。
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楼
更新:更改它以解决文件问题:
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
您需要在递归函数之外处理文件,否则在完成之前将其关闭