Diferencia entre FileInputStream y FileReader en Java

Primero discutámoslos para obtener la comprensión junto con un ejemplo para interpretar las diferencias. Aquí primero discutiremos la clase FileReader. Entonces, comenzar con la clase FileReader en Java se usa para leer datos del archivo. Devuelve datos en formato de byte como la clase FileInputStream . Es una clase orientada a caracteres que se utiliza para el manejo de archivos en Java. Esta clase hereda de la clase InputStreamReader . FileReader se utiliza para leer secuencias de caracteres.

Sintaxis: 

Crear usando el nombre del archivo

FileReader input = new FileReader(String name);

Crear usando un objeto del archivo

FileReader input = new FileReader(File fileObj);

Implementación:

Consideremos un archivo de muestra donde estamos leyendo los datos del archivo de texto Gfg.txt usando la clase Java FileReader. Suponemos que tenemos los siguientes datos en el archivo, a saber, el archivo «Gfg.txt» de la siguiente manera:

Welcome to GeeksForGeeks.

Ejemplo

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();
    }
}

Producción:

Welcome to GeeksForGeeks

Ahora, pensando en la segunda forma, que es a través de la clase FileInputStream. Está presente en el mismo paquete, a saber, java.io, que recupera bytes de un archivo. Se utiliza para leer datos orientados a bytes (flujos de bytes sin procesar) como datos de imagen, audio y video. También puede leer datos de un flujo de caracteres. Sin embargo, se recomienda la clase FileReader para leer secuencias de caracteres.

Sintaxis:

Creando usando la ruta al archivo

FileInputStream input = new FileInputStream(stringPath);

Crear usando un objeto del archivo

FileInputStream input = new FileInputStream(File fileObject);

Nota: Antes de ejecutar el código, se requiere crear un archivo de texto llamado «Gfg.txt». En este archivo, tenemos el siguiente contenido: «Bienvenido a GeeksForGeeks»

Ejemplo

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);
        }
    }
}

Producción:

Data in the file:
Welcome to GeeksForGeeks

Ahora, después de comprender ambos, concluyamos las diferencias entre ellos que se muestran a continuación en el formato tabular.

FileInputStream

Lector de archivos

Stream es un objeto basado en bytes que puede leer y escribir bytes. Reader está basado en caracteres, se puede utilizar para leer o escribir caracteres.
FileInputStream está basado en bytes, se puede usar para leer bytes. FileReader está basado en caracteres, se puede utilizar para leer caracteres.
Stream se utiliza para entrada/salida binaria El lector se utiliza para la entrada/salida de caracteres
FileInputStream se utiliza para leer archivos binarios. FileReader se utiliza para leer archivos de texto en la codificación predeterminada de la plataforma.
La serialización y la deserialización se pueden realizar con FileInputStream y ObjectInputStream, y los objetos serializados se pueden guardar en un archivo. La serialización convierte un objeto en un flujo de bytes y la deserialización lo vuelve a convertir en un objeto. FileReader no se usa para serialización y deserialización, ya que lee caracteres, no bytes.
FileInputStream es descendiente de la clase InputStream. FileReader se extiende de la clase Reader
El método read() de FileInputStream puede leer un byte a la vez o varios bytes en una array de bytes. El método read() de FileReader puede leer un carácter a la vez o varios caracteres en una array

Publicación traducida automáticamente

Artículo escrito por sanketnagare y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *