2013-04-09 75 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(),並檢查它是否有效!