2011-10-26 56 views
-2

Java中的「標準流」(System.outSystem.inSystem.err)和「控制檯」(System.console())之間有什麼區別?「標準流」和「控制檯」有什麼區別?

+0

請更具體。你的意思是'System.out'和'System.err'的工作原理嗎? – hellectronic

+2

請詳細說明你的問題。 –

+0

@normalocity你能回答這個問題嗎? – Rekha

回答

2

每個進程(不只是Java程序)都有三個流:輸入,輸出和錯誤。在Java中,對這些的訪問已經簡化爲System.in,System.out和System.err。這些用於讀取或寫入命令行。例如,如果您曾經有一個命令行程序要求輸入,您輸入並按下回車鍵,那麼該輸入會轉換爲標準輸入。

有兩個輸出流(out和err),因爲它們報告不同的東西。例如,您可能想要保存錯誤輸出,但不關心程序打印的通用輸出。或者你可能想壓制標準輸出,所以只打印錯誤。或者你有一個程序有各種各樣的問題,你想壓制錯誤,所以你可以看到它試圖做什麼,而不是1000萬堆棧跟蹤。

因此,您的問題的簡短答案是標準流是寫入和讀取控制檯的方式。

+0

這並沒有真正回答這個問題。有'System.console()',它返回一個'Console'對象。 – Dukeling

0

總之,控制檯是可能捕獲流並在屏幕上顯示它們的東西。每個程序都可以訪問輸入/輸出流,但並不是每個程序都可以訪問控制檯。

某些程序因爲它們的流最初(或最終被重定向)而無法訪問控制檯。其他程序在配置中從未訪問控制檯的情況下啓動。在後一種情況下,寫入System.out的所有內容都可能寫入/dev/null

雖然這適用於Java,但控制檯(以及流的「另一端」)實際上是操作系統概念。

相關問題