<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java `BufferedInputStream`類 > 原文: [https://www.programiz.com/java-programming/bufferedinputstream](https://www.programiz.com/java-programming/bufferedinputstream) #### 在本教程中,我們將借助示例學習 Java `BufferedInputStream`及其方法。 `java.io`包的`BufferedInputStream`類與其他輸入流一起使用,可以更有效地讀取數據(以字節為單位)。 它擴展了`InputStream`抽象類。 ![The BufferedInputStream class is a subclass of the Java InputStream.](https://img.kancloud.cn/bf/3d/bf3db177a39441ad09e30e0ae7905d51_496x372.png "Java BufferedInputStream Class") * * * ## `BufferedInputStream`的工作原理 `BufferedInputStream`維護 8192 字節的內部**緩沖區**。 在`BufferedInputStream`中進行讀取操作期間,將從磁盤讀取一部分字節并將其存儲在內部緩沖區中。 并從內部緩沖區中逐個讀取字節。 因此,減少了與磁盤的通信次數。 這就是為什么使用`BufferedInputStream`讀取字節更快的原因。 * * * ## 創建一個`BufferedInputStream` 為了創建一個`BufferedInputStream`,我們必須首先導入`java.io.BufferedInputStream`包。 導入包后,便可以在此處創建輸入流。 ```java // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); ``` 在上面的示例中,我們使用名為`file`創建了名為`buffer`的`BufferdInputStream`。 在此,內部緩沖區的默認大小為 8192 字節。 但是,我們也可以指定內部緩沖區的大小。 ```java // Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size); ``` `buffer`將有助于更快地從文件中讀取字節。 * * * ## `BufferedInputStream`的方法 `BufferedInputStream`類提供了`InputStream`類中存在的不同方法的實現。 ### `read()`方法 * `read()` - 從輸入流中讀取一個字節 * `read(byte[] arr)` - 從流中讀取字節并將其存儲在指定的數組中 * `read(byte[] arr, int start, int length)` - 從流中讀取等于`length`的字節數,并從位置`start`開始存儲在指定的數組中 假設我們有一個名為`input.txt`的文件,其內容如下。 ```java This is a line of text inside the file. ``` 讓我們嘗試使用`BufferedInputStream`讀取文件。 ```java import java.io.BufferedInputStream; import java.io.FileInputStream; class Main { public static void main(String[] args) { try { // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file int i = input .read(); while (i != -1) { System.out.print((char) i); // Reads next byte from the file i = input.read(); } input.close(); } catch (Exception e) { e.getStackTrace(); } } } ``` **輸出** ```java This is a line of text inside the file. ``` 在上面的示例中,我們創建了一個名為`buffer`和`FileInputStream`的緩沖輸入流。 輸入流與文件`input.txt`鏈接。 ```java FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); ``` 在這里,我們已使用`read()`方法從緩沖讀取器的內部緩沖區讀取字節數組。 * * * ### `available()`方法 要獲取輸入流中可用字節的數量,我們可以使用`available()`方法。 例如, ```java import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main { public static void main(String args[]) { try { // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); } catch (Exception e) { e.getStackTrace(); } } } ``` **輸出**: ```java Available bytes at the beginning: 39 Available bytes at the end: 36 ``` 在上面的示例中, 1. 我們首先使用`available()`方法檢查輸入流中的可用字節數。 2. 然后,我們已使用`read()`方法 3 次從輸入流中讀取 3 個字節。 3. 現在,在讀取字節之后,我們再次檢查了可用字節。 這次,可用字節減少了 3。 * * * ### `skip()`方法 要丟棄并跳過指定的字節數,可以使用`skip()`方法。 例如, ```java import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main { public static void main(String args[]) { try { // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) { System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); } // Closes the input stream buffer.close(); } catch (Exception e) { e.getStackTrace(); } } } ``` **輸出**: ```java Input stream after skipping 5 bytes: is a line of text inside the file. ``` 在上面的示例中,我們使用`skip()`方法從文件輸入流中跳過 5 個字節。 因此,從輸入流中跳過字節`'T'`,`'h'`,`'i'`,`'s'`和`' '`。 * * * ### `close()`方法 要關閉緩沖的輸入流,可以使用`close()`方法。 調用`close()`方法后,我們將無法使用輸入流讀取數據。 * * * ## `BufferedInputStream`的其他方法 | 方法 | 內容描述 | | --- | --- | | `mark()` | 標記輸入流中已讀取數據的位置 | | `reset()` | 將控件返回到輸入流中設置了標記的點 | 要了解更多信息,請訪問 [Java `BufferdInputStream`(官方 Java 文檔)](https://docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html "Java BufferdInputStream (official Java documentation)")。
                  <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>

                              哎呀哎呀视频在线观看