2016-03-17 31 views
4

我想了解java流。Java - 什麼是System.out的PrintStream流?

的代碼:

System.out.println(System.out.getClass().getCanonicalName()) 

輸出

java.io.PrintStream 

正如我理解的PrintStream是另一流添加格式化的功能的包裝。但我不明白什麼是由PrintStream包裝的流類?這是控制檯嗎?以及如何檢查它 - 從PrintStream API我沒有找到任何合適的方法。

回答

4

這是具有API的點。在某種程度上,實際的「流」成爲操作系統和平臺的依賴。但是Java已經建立起來,所以你不必擔心這種事情

+1

如果他是有意這樣的事情,他仍然可以提出要求。 – Chris311

+0

如果它如此依賴於平臺,那麼Console類是如何實現的? –

+0

我不能接受這個答案。 Java不是我們可以說的語言類型 - 不用擔心。這是一種專業語言,所以在這裏,一切都必須在最底層明確。 –

0

PrintStream使用BufferedWriter textOutOutputStreamWriter charOut。對於打印行,執行以下代碼:

private void println() { 
    try { 
     synchronized (this) { 
      if (out == null) 
       throw new IOException("Stream closed"); 
      textOut.newLine(); 
      textOut.flushBuffer(); 
      charOut.flushBuffer(); 
      if (autoFlush) 
       out.flush(); 
     } 
    } 
    catch (InterruptedIOException x) { 
     Thread.currentThread().interrupt(); 
    } 
    catch (IOException x) { 
     trouble = true; 
    } 
} 

其中out是OutputStream

+0

「out是一個OutputStream」 - 是的。但我認爲OP的問題是關於哪個實現類是真的。 – f1sh

0

最終都流是基於字符/字節流。像打印作家東西都放在那個包裝,以便您可以根據您是舒適的,而不是每次轉換您的數據轉換成字符/字節類型的時間等數據類型做的事情。

0

它包裝是綁在控制檯輸出一個FileOutputStream。