Implementar cómo cargar archivos como InputStream en Java

Declaración del problema: ya existe un archivo en el que se debe cargar el mismo archivo mediante el método InputStream. 

Concepto: Al acceder a un archivo, el archivo se está leyendo o escribiendo. aquí hay dos flujos, a saber, fileInputStream y fileOutputStream 

Java Stream es el flujo de datos desde el origen hasta el destino. OutputStream y InputStream son abstracciones sobre el acceso de bajo nivel a los datos. InputStream es una fuente para leer datos. Una secuencia puede tener varios tipos de fuentes, como archivos de disco, dispositivos, otros programas y arrays de memoria. A continuación se analizan varias formas de leer el contenido de un archivo mediante InputStream en Java.

Supongamos que el archivo de texto se almacena en la ruta «/ Users/mayanksolanki/Desktop/Folder/test.txt » y tiene el siguiente contenido:

Enfoques: 

  • Uso de las bibliotecas de E/S de comandos de Apache
  • Usando el método readline() de BufferedReaderClass
  • Usando el método read() de InputStreamClass

Describamos e implementemos los métodos uno por uno a través de ejemplos:

Método 1: usar la biblioteca Apache Common IO

La clase IOUtils de la biblioteca Apache Commons IO contiene un método toString() que acepta un InputStream y representa su contenido como una string, como se muestra a continuación:

Java

// Importing generic Classes/Files
import java.util.*;
 
// importing Apache specific Class/es
import org.apache.commons.io.IOUtils;
 
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating file object and specify file path
        File file = new file(
            "/Users/mayanksolanki/Desktop/Folder/test.txt");
        // create a stream to read contents of that file
 
        // Try block to check exception
        try {
 
            FileInputStream input
                = new FileInputStream(file);
            // Representing input object in form of string
 
            String contents = IOUtils.toString(input);
 
            // Print contents of that file
            System.out.println(contents);
        }
 
        // Catch block to handle exceptions
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 
Producción: 

Método 2: método readLine() de BufferedReader

Concepto utilizado: uso de la función readLine() incorporada: el método readLine() de la clase BufferedReader en Java se usa para leer una línea de texto a la vez. El final de una línea debe entenderse por ‘\r’ o ‘\n’ o EOF.

Aquí está la implementación del método readLine ()

Java

// Importing generic Classes/Files
import java.io.*;
 
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Create file object and specify file path
        File file = new File(
            "/Users/mayanksolanki/Desktop/Folder/test.txt");
 
        try (FileInputStream input
             = new FileInputStream(file)) {
            // create an empty string builder to store
            // string
 
            StringBuilder content = new StringBuilder();
            // create an object of bufferedReader to read
            // lines from file
 
            BufferedReader br = new BufferedReader(
                new InputStreamReader(input));
 
            String line;
            // store each line one by one until reach end of
            // file
 
            while ((line = br.readLine()) != null) {
                // append string builder with line and with
                // '/n' or '/r' or EOF
                content.append(line
                               + System.lineSeparator());
            }
 
            // print string builder object i.e content
            System.out.println(content.toString());
        }
 
        // Catch block to handle exceptions
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Producción: 

Método 3: método read() de InputStream

El método read() de la clase InputStream lee un byte de datos del flujo de entrada. Se devuelve el siguiente byte de datos, o -1 si se llega al final del archivo y genera una excepción si se produce un error de E/S. Consulte el programa. 

Java

// Importing generic Classes/Files
import java.io.*;
 
class GFG {
 
    // Main driver function
    public static void main(String[] args)
    {
        // Creating file object and specifying path
        File file = new File(
            "/Users/mayanksolanki/Desktop/Folder/test.txt");
 
        try (FileInputStream input
             = new FileInputStream(file)) {
            int character;
            // read character by character
            // by default read() function return int between
            // 0 and 255.
 
            while ((character = input.read()) != -1) {
                System.out.print((char)character);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Hay otra versión sobrecargada del método read() que lee la longitud especificada de bytes del flujo de entrada en una array de bytes. Los bytes correspondientes se pueden decodificar en caracteres. Consulte el siguiente ejemplo.

Java

import java.nio.charset.StandardCharsets;
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // create file object and specify path
        // specicified directory is random
        File file = new File(
            "/Users/mayanksolanki/Desktop/Folder/test.txt");
 
        // Try block to catch exception/s if any
        try {
            (FileInputStream input
             = new FileInputStream(file))
 
                // create a byte array of size equal to
                // length of file
                byte bytes[]
                = new byte[(int)file.length()];
 
            // read bytes from file
            input.read(bytes);
 
            // decode into string format
            String content
                = new String(bytes, StandardCharsets.UTF_8);
 
            // print contents of that file
            System.out.println(content);
        }
        catch (Exception e) {
 
            //
            e.printStackTrace();
        }
    }
}

Producción 

La salida de todos los programas anteriores es la misma.
 

Publicación traducida automáticamente

Artículo escrito por rohanchopra96 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 *