爲什麼某些流需要被刷新(FileOutputStream
和套接字流),而標準輸出流不?當/爲什麼叫System.out.flush()在Java中
每當有人使用System.out
PrintStream
對象,無論是在調用println()
或write()
,他們從來不沖洗流。但是,其他程序員習慣於與其他流一起呼叫flush()
a PrintStream
/PrintWriter
。
我最近問這個問題給幾個程序員,有些人認爲在Java中有一些後臺處理來自動刷新System.out
流,但我找不到任何文檔。
像這樣的事情使我懷疑,如果簡單地調用System.out.println()
是獨立於平臺的一些系統可能需要在沖洗流。
唯一有效的'如果真',但果真如此嗎?我找不到任何關於自動刷新的對的System.out ... –
@Carlos價值的任何文件,它是由該引導了JVM並啓動主類什麼'System.out'和'System.err'是系統必然會發生什麼以及如何沖洗。當您使用'java'二進制推出的一類'System.out'被初始化爲像'新的PrintStream(新FileOutputStream中(FileDescriptor.out),真實,System.getProperty(「file.encoding的」))'但其他JVM不同。顯然,嵌入小應用程序的JVM會有所不同。 –
@MikeSamuel,那麼這是否意味着我們仍然需要* *由於自動沖洗行爲不** **保證在規格反正刷新? – Pacerier