<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之旅 廣告
                # Java `FileInputStream`教程 原文:http://zetcode.com/java/fileinputstream/ Java `FileInputStream`教程顯示了如何使用`FileInputStream`類讀取 Java 中的文件。 ## Java `FileInputStream` `FileInputStream`從文件系統中的文件讀取輸入字節。 ## Java `FileInputStream`構造器 這些是`FileInputStream`構造器: * `FileInputStream(File file)` - 創建文件輸入流以從`File`對象讀取。 * `FileInputStream(String name)` - 創建文件輸入流以從指定的文件名讀取。 * `FileInputStream(FileDescriptor fdObj)` - 創建從指定文件描述符讀取的文件輸入。 ## Java `FileInputStream`關閉 `FileInputStream`的`close()`方法關閉文件輸入流,并釋放與此流關聯的所有系統資源。 在我們的示例中,我們使用`try-with-resources`語句,該語句確保在語句末尾關閉每個資源。 ## Java `FileInputStream`讀取 `FileInputStream`使用以下讀取方法讀取字節: * `read(byte[] b)`-從此輸入流中讀取最多`b.length`個字節的數據到一個字節數組中。 * `read(byte[] b, int off, int len)`-從此輸入流中讀取最多`len`個字節的數據到一個字節數組中。 * `read()`-從文件輸入流中讀取一個字節。 ## Java `FileInputStream`讀取字符 以下示例使用`FileInputStream`從文件中讀取三個字符。 `FileInputStreamEx.java` ```java package com.zetcode; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileInputStreamEx { public static void main(String[] args) throws FileNotFoundException, IOException { String fileName = "/home/janbodnar/tmp/smallfile.txt"; try (FileInputStream fis = new FileInputStream(fileName)) { char c1 = (char) fis.read(); char c2 = (char) fis.read(); char c3 = (char) fis.read(); System.out.println(c1); System.out.println(c2); System.out.println(c3); } } } ``` 該代碼示例使用`read()`讀取三個字符。 ```java char c1 = (char) fis.read(); ``` 我們用`read()`讀取一個字符,并將該值轉換為`char`。 ```java System.out.println(c1); ``` 字符被打印到控制臺。 ## Java `FileInputStream`按字符讀取文件 如果到達文件末尾,則`read()`方法返回 -1。 通過`while`循環,我們可以逐字符讀取整個文件。 請注意,這種方式不是很有效。 `FileInputStreamEx2.java` ```java package com.zetcode; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileInputStreamEx2 { public static void main(String[] args) throws FileNotFoundException, IOException { String fileName = "/home/janbodnar/tmp/smallfile.txt"; try (FileInputStream fis = new FileInputStream(fileName)) { int i; while ((i = fis.read()) != -1) { System.out.print((char) i); } } System.out.println(); } } ``` 該示例讀取文件的內容并將其寫入終端。 ```java while ((i = fis.read()) != -1) { System.out.print((char) i); } ``` 在`while`循環中,我們從`FileInputStream`讀取字符,直到`read()`方法返回 -1。 ## Java `FileInputStream`通過文本塊讀取文件 按數據塊讀取文件更有效; 例如每個方法調用中 1024 個字節。 `FileInputStreamEx3.java` ```java package com.zetcode; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.StandardCharsets; public class FileInputStreamEx3 { public static void main(String[] args) throws FileNotFoundException, IOException { String fileName = "/home/janbodnar/tmp/bigfile.txt"; try (FileInputStream fis = new FileInputStream(fileName)) { int i = 0; do { byte[] buf = new byte[1024]; i = fis.read(buf); String value = new String(buf, StandardCharsets.UTF_8); System.out.print(value); } while (i != -1); } } } ``` 在此示例中,我們通過數據塊讀取文件 ```java byte[] buf = new byte[1024]; ``` 我們從文件中讀取數據到此字節數組中。 ```java i = fis.read(buf); ``` `read()`方法從此流中最多讀取`b.length`個字節的數據到提供的字節數組中。 ```java String value = new String(buf, StandardCharsets.UTF_8); ``` 從字節數組中,我們創建一個`String`。 ## 使用`BufferedReader`的 Java `FileInputStream` 使用`BufferedReader`可以提高閱讀效率。 `BufferedReader`從字符輸入流中讀取文本,緩沖字符,以便有效讀取字符。 `FileInputStreamEx4.java` ```java package com.zetcode; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; public class FileInputStreamEx4 { public static void main(String[] args) throws FileNotFoundException, IOException { String fileName = "/home/janbodnar/tmp/bigfile.txt"; try (BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(fileName), StandardCharsets.UTF_8));) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } System.out.println(); } } ``` 該示例使用緩沖技術讀取大文件,以提高效率。 ```java while ((line = br.readLine()) != null) { ``` `readLine()`方法從緩沖區讀取一行文本。 在本教程中,我們介紹了 Java `FileInputStream`類。 您可能也對相關教程感興趣: [Java `FileOutputStream`教程](/java/fileoutputstream/), [Java `InputStreamReader`教程](/java/inputstreamreader/), [Java `InputStream`教程](/java/inputstream/), [Java 謂詞教程](/java/predicate/), [Java 文件時間](/articles/javafiletime/), [Java 附加到文件](/articles/javaappendtofile/),[用 Java 讀取文本文件](/articles/javareadtext/)和 [Java 教程](/lang/java/)。
                  <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>

                              哎呀哎呀视频在线观看