<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                <!-- Summary --> ## 本章小結 Java 的 I/O 流類庫的確能夠滿足我們的基本需求:我們可以通過控制臺、文件、內存塊,甚至因特網進行讀寫。通過繼承,我們可以創建新類型的輸入和輸出對象。并且我們甚至可以通過重新定義“流”所接受對象類型的 `toString()` 方法,進行簡單的擴展。當我們向一個期望收到字符串的方法傳送一個非字符串對象時,會自動調用對象的 `toString()` 方法(這是 Java 中有限的“自動類型轉換”功能之一)。 在 I/O 流類庫的文檔和設計中,仍留有一些沒有解決的問題。例如,我們打開一個文件用于輸出,如果在我們試圖覆蓋這個文件時能拋出一個異常,這樣會比較好(有的編程系統只有當該文件不存在時,才允許你將其作為輸出文件打開)。在 Java 中,我們應該使用一個 `File` 對象來判斷文件是否存在,因為如果我們用 `FileOutputStream` 或者 `FileWriter` 打開,那么這個文件肯定會被覆蓋。 I/O 流類庫讓我們喜憂參半。它確實挺有用的,而且還具有可移植性。但是如果我們沒有理解“裝飾器”模式,那么這種設計就會顯得不是很直觀。所以,它的學習成本相對較高。而且它并不完善,比如說在過去,我不得不編寫相當數量的代碼去實現一個讀取文本文件的工具——所幸的是,Java 7 中的 nio 消除了此類需求。 一旦你理解了裝飾器模式,并且開始在某些需要這種靈活性的場景中使用該類庫,那么你就開始能從這種設計中受益了。到那時候,為此額外多寫幾行代碼的開銷應該不至于讓人覺得太麻煩。但還是請務必檢查一下,確保使用[文件](./17-Files.md)一章中的庫和技術沒法解決問題后,再考慮使用本章的 I/O 流庫。 [^1]: 很難說這就是一個很好的設計選擇,尤其是與其它編程語言中簡單的 I/O 類庫相比較。但它確實是如此選擇的一個正當理由。 [^2]: 譯者注:“flush” 直譯是“清空”,意思是把緩沖中的數據清空,輸送到對應的目的地(如文件和屏幕)。 [^3]: XML 是另一種方式,可以解決在不同計算平臺之間移動數據,而不依賴于所有平臺上都有 Java 這一問題。XML 將在[附錄:對象序列化](./Appendix-Object-Serialization.md)一章中進行介紹。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看