<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之旅 廣告
                # 緩存流 以介質是硬盤為例,**字節流和字符流的弊端**: 在每一次讀寫的時候,都會訪問硬盤。 如果讀寫的頻率比較高的時候,其性能表現不佳。 為了解決以上弊端,采用緩存流。 緩存流在讀取的時候,**會一次性讀較多的數據到緩存中**,以后每一次的讀取,都是在緩存中訪問,直到緩存中的數據讀取完畢,再到硬盤中讀取。 就好比吃飯,**不用緩存就是每吃一口都到鍋里去鏟**。**用緩存就是先把飯盛到碗里**,碗里的吃完了,再到鍋里去鏟 緩存流在寫入數據的時候,會先把數據寫入到緩存區,直到緩存區**達到一定的量**,才把這些數據,**一起寫入到硬盤中去**。按照這種操作模式,就不會像字節流,字符流那樣**每寫一個字節都訪問硬盤**,從而減少了IO操作 # 使用緩存流讀取數據 緩存字符輸入流 BufferedReader 可以一次讀取一行數據 ``` package com.dodoke.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class TestSteam8 { public static void main(String[] args) { // 準備文件lol.txt其中的內容是 // garen kill teemo // teemo revive after 1 minutes // teemo try to garen, but killed again File f = new File("d:/log.txt"); // 創建文件字符流 // 緩存流必須建立在一個存在的流的基礎上 try (FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr);) { while (true) { // 一次讀一行 String line = br.readLine(); if (null == line) break; System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } } ``` # 使用緩存流寫出數據 PrintWriter 緩存字符輸出流, 可以一次寫出一行數據 ``` package com.dodoke.util; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; public class TestSteam9 { public static void main(String[] args) { // 向文件lol2.txt中寫入三行語句 File f = new File("d:/log2.txt"); try ( // 創建文件字符流 FileWriter fw = new FileWriter(f); // 緩存流必須建立在一個存在的流的基礎上 PrintWriter pw = new PrintWriter(fw);) { pw.println("garen kill teemo"); pw.println("teemo revive after 1 minutes"); pw.println("teemo try to garen, but killed again"); } catch (Exception e) { e.printStackTrace(); } } } ``` # flush 有的時候,需要**立即把數據寫入到硬盤**,而不是等緩存滿了才寫出去。 這時候就需要用到flush。 ``` package com.dodoke.util; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; public class TestSteam10 { public static void main(String[] args) { // 向文件lol2.txt中寫入三行語句 File f = new File("d:/log2.txt"); try ( // 創建文件字符流 FileWriter fw = new FileWriter(f); // 緩存流必須建立在一個存在的流的基礎上 PrintWriter pw = new PrintWriter(fw);) { pw.println("garen kill teemo"); // 強制把緩存中的數據寫入硬盤,無論緩存是否已滿 pw.flush(); pw.println("teemo revive after 1 minutes"); pw.flush(); pw.println("teemo try to garen, but killed again"); pw.flush(); } catch (Exception e) { e.printStackTrace(); } } } ```
                  <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>

                              哎呀哎呀视频在线观看