當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java FileInputStream和FileReader的區別用法及代碼示例


讓我們首先討論它們,以便理解並通過示例來解釋差異。首先我們將討論FileReader 類。所以java中以FileReader class開頭用於從文件中讀取數據。它以字節格式返回數據,如 FileInputStream class 。它是一個character-oriented類,用於java中的文件處理。該類繼承自 InputStreamReader class。 FileReader 用於讀取字符流。

句法:

使用文件名創建

FileReader input = new FileReader(String name);

使用文件對象創建

FileReader input = new FileReader(File fileObj);

執行:

讓我們考慮一個示例文件,其中我們使用 Java FileReader 類從文本文件 Gfg.txt 讀取數據。我們假設文件中有以下數據,即 “Gfg.txt” 文件,如下所示:

Welcome to GeeksForGeeks.

示例

Java


// Java Program to Illustrate FileReader class
// Importing class
import java.io.FileReader;
// Main class
// FileReaderExample
public class GFG {
    // Main driver method
    public static void main(String args[]) throws Exception
    {
        // Creating an object of FileReader class to
        // read content from file in local directory
        FileReader fr = new FileReader("C:\\Gfg.txt");
        int i;
        // Reads from the file
        while ((i = fr.read()) != -1) {
            // Printing  the content inside the file
            System.out.print((char)i);
        }
        // Closing the connections to
        // avoid memory space
        fr.close();
    }
}

輸出:

Welcome to GeeksForGeeks

現在討論第二種方法,即通過 FileInputStream 類。它存在於同一個包中,即java.io,它從文件中檢索字節。它用於讀取麵向字節的數據(原始字節流),例如圖像數據、音頻和視頻。您還可以從字符流中讀取數據。但是,建議使用 FileReader 類來讀取字符流。

用法:

使用文件路徑創建

FileInputStream input = new FileInputStream(stringPath);

使用文件對象創建

FileInputStream input = new FileInputStream(File fileObject);

Note: Before running the code, a text file named “Gfg.txt” is required to be created. In this file, we are having the following content: “Welcome to GeeksForGeeks”

示例

Java


// Java Program to Illustrate FileInputStream class
// Importing class from java.io package
import java.io.FileInputStream;
// Main class
public class GFG {
    // Main driver method
    public static void main(String args[])
    {
        // Try block to check for exceptions
        try {
            // Creating an object of FileInputStream class
            // in main() body to get file
            FileInputStream input
                = new FileInputStream("Gfg.txt");
            // Display message only
            System.out.println("Data in the file: ");
            // Reading the first byte
            int i = input.read();
            while (i != -1) {
                System.out.print((char)i);
                // Reads next byte from the file using
                // next() method
                i = input.read();
            }
            // Closing the file
            input.close();
        }
        // Catch block to handle the exceptions
        catch (Exception e) {
            // Print the exception on the console
            System.out.println(e);
        }
    }
}

輸出:

Data in the file:
Welcome to GeeksForGeeks

現在,在了解了它們之後,讓我們總結一下它們之間的差異,如下表格式所示。

FileInputStream

FileReader

Stream是一個基於字節的對象,可以讀取和寫入字節。 Reader 是基於字符的,它可用於讀取或寫入字符。
FileInputStream是基於字節的,它可用於讀取字節。 FileReader是基於字符的,它可以用來讀取字符。
Stream用於二進製輸入/輸出 Reader用於字符輸入/輸出
FileInputStream用於讀取二進製文件。 FileReader 用於讀取平台默認編碼的文本文件。
序列化和DeSerialization可以使用FileInputStream和ObjectInputStream來完成,序列化的對象可以保存到文件中。序列化將對象轉換為字節流,反序列化將其轉換回對象。 FileReader 不用於序列化和反序列化,因為它讀取字符而不是字節。
FileInputStream 是 InputStream 類的後代。 FileReader 繼承自 Reader 類
read()方法FileInputStream 可以一次讀取一個字節,也可以讀取字節數組中的多個字節。 read()方法FileReader 可以一次讀取一個字符,也可以將多個字符讀入數組


相關用法


注:本文由純淨天空篩選整理自sanketnagare大神的英文原創作品 Difference Between FileInputStream and FileReader in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。