2013-04-14 20 views
0

我想寫一個文本文件。然後,我想繼續打印到控制檯。備用文本文件和控制檯JAVA

我能夠成功輸出到文本文件。但是,在關閉創建的PrintStream以寫入文本文件後,我無法打印到控制檯。在下面的代碼,例如,文本文件具有所謂的「置換」後面那句「測試之前關閉」方法的輸出。但是,短語「關閉後測試」既不輸出到文本文件,也不輸出到控制檯。感謝您的任何建議!

public static void main(String[] args) throws FileNotFoundException { 
    PrintStream out2 = new PrintStream(new FileOutputStream("output.txt")); 
    System.setOut(out2); 
    permutation("1234"); 
    System.out.println("Test before close"); 
    out2.close(); 
    System.out.println("Test after close"); 
} 
+1

Java和JavaScript是不同的語言。 –

+0

我是那麼多新手;我不知道。感謝:o) – LanneR

回答

0

您不必使用system.setOut寫入一個文件,你在做什麼是壓倒一切「的System.out」,而不是將其復位。如果你真的想這樣做,你應該增加:

saveOut = System.out的

的放樣之前,然後在最後一行前添加:

System.setOut(saveOut)

把原始的system.out放回去。

重定向所有你想要的溪流,只是不越過他們。

+0

謝謝你分享你的智慧! – LanneR

0
在一個變量

商店System.out(默認情況下,控制檯),你setOut在什麼地方。

oldOut = System.out; 

然後,經過(或之前)out2.close();,添加:

System.setOut(oldOut); 

這將恢復舊標準輸出,讓您再次打印到控制檯。

(你的代碼實際上在做離開System.out設置爲out2,它現在已經關閉。因此,所有的輸出將進入一個黑洞)

+0

非常感謝您的幫助和解釋! – LanneR