2013-04-09 114 views
0

我只是想要反转我从输入接收的行,但每次运行我的代码时,output.txt文件都是空的。我错过了什么? 对我来说,这似乎大部分都是正确的,即使是递归通道。递归反向Java Java

感谢

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.PrintWriter; 

public class ReverseLines { 

    public static BufferedReader input; 
    public static PrintWriter output; 

    public static void main(String[] args) throws Exception{ 

    input = new BufferedReader(new FileReader(args[0])); 
    output = new PrintWriter(new FileWriter(args[1])); 
    reverse(input, output); 

    } 

    public static void reverse(BufferedReader input, PrintWriter output) 
     throws Exception { 

    String line = input.readLine(); 
    if(line != null) { 
    reverse (input, output); 
    output.println(line); 
    }  

    } 

} 
+1

当你完成它的时候,做一些关闭()你的作家。 – 2013-04-09 18:30:12

+0

非常感谢,我错过了! – 2013-04-09 18:35:52

回答

3

关闭PrintWritermain方法:

output.close(); 
+1

确保在'main'方法中关闭它,而不是在递归'reverse'方法中。 – 2013-04-09 18:32:30

+0

更多解释:这里最重要的是'output.close()'刷新缓冲区,换句话说就是将所有内容写入磁盘。这可能只是'output.flush()',这将解决空输出文件的问题。当然,文件仍然必须关闭,不必要的刷新可能会损害性能和混乱代码,所以这个答案没有错。 – hyde 2013-04-09 18:36:34

0

output.flush(),并检查它是否有效!