30
Q
重置標準輸出流
A
回答
63
您可以通過FileDescriptor.out
獲得標準輸出的文件描述符。要重置標準輸出打印到控制檯,你做
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
另一種方法是簡單地堅持原來的對象,如下所示:
PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); // reset to standard output
22
這是一個老問題,但它變成了在谷歌搜索中,我想改正它。你可以通過使用FileDescriptor
類來獲得它。調用new PrintStream(new FileOutputStream(FileDescriptor.out)))
應該會給你一些打印到標準輸出的東西。
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
public static void main(String [] args) {
System.err.println("error.");
System.out.println("out.");
System.setOut(System.err);
System.out.println("error?");
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println("out?");
}
相關問題
- 1. 流標準輸出到s3
- 2. Apache標準輸出流
- 3. 在Python中的流標準輸出/標準輸出
- 4. 重定向標準輸出
- 5. 模板類的標準流輸出
- 6. 流的Java標準輸出到perl STDOUT
- 7. C:重定向標準輸入,標準輸出到管道
- 8. 是否有可能輸出到監視流而不是標準輸入,標準輸出和標準錯誤? (python)
- 9. 標準輸出重定向到列表<string>或流
- 10. Logstash輸出:標準輸出
- 11. python子流程輸出到標準輸出
- 12. 使用Paramiko的標準輸出作爲標準輸入與子流程
- 13. 將文件用作標準輸入和標準輸出進行子流程
- 14. 重定向標準輸出通過ssh
- 15. ProcessBuilder重定向到標準輸出
- 16. 如何重定向到標準輸出?
- 17. 無在重定向標準輸出
- 18. 重定向標準流
- 19. 標準錯誤重定向到標準輸出
- 20. 關於標準輸出/標準錯誤重定向
- 21. 從C#重定向原生dll標準輸出/標準錯誤#
- 22. 從標準輸出
- 23. fflush標準輸出
- 24. 我如何重定向python標準輸出到C標準輸入在Linux中使用流水線
- 25. PowerShell的保存標準輸出和顯示標準輸出
- 26. 將過程輸出重定向到標準輸出
- 27. 批重定向輸出標準錯誤到文件和管道輸出標準輸出到文件
- 28. 試圖ffmpeg的二進制標準輸出重定向到NeroAacEnc標準輸入
- 29. 如何重置輸出流操縱器標誌
- 30. 重定向標準輸入
如何走到這是不是upvoted更多... – Jas 2013-12-24 10:38:31
你能澄清,如果接受的答案是不正確(即,如果'System.setOut(標準輸出);'按預期工作)?您的方法是否有益於簡單存儲原始流?另外,我注意到'System.out'等都被標記爲'final',好奇你是否可以提供有關Java如何處理'setOut()'的內幕。 – dimo414 2014-06-09 04:51:34
'System.out'和'System.err'由底層本機C代碼處理。它們被標記爲「final」,以便在虛擬機的本地部分「注意到它們」時不改變它們的指針值。提供的'setOut()'方法需要讓本地部分調整其內部引用。 – ksmonkey123 2014-11-24 10:01:33