我只想反转文件的行但我无法理解。我以为我会使用递归作为最简单的方法,但它不起作用。这就是我认为我会做的事情。
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();
}
我正在使用这个文件:
你好
这是中间的
这些在顶部
我不断得到这个:
你好
中间
我很困惑。我之前看过这个问题,但所有的问题都是“如何扭转这些问题”,答案是“使用递归”,但仍然对不起要求
答案 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
你需要在递归函数之外处理文件,否则你会在它完成之前关闭它