Programa Java para convertir InputStream a string

Las operaciones de lectura y escritura son funcionalidades básicas que los usuarios realizan en cualquier aplicación. Cada lenguaje de programación proporciona flujos de E/S para leer y escribir datos. La clase FileInputStream y la clase FileOutputStream de Java realizan operaciones de E/S en archivos. La clase FileInputStream se usa para leer datos de archivos y la clase FileOutputStream se usa para escribir datos en archivos. Hay varias formas de convertir un objeto InputStream a String en Java utilizando bibliotecas integradas y bibliotecas externas. 

Enfoques: tres formas de convertir el objeto InputStream en String son:

  1. Usando la clase InputStreamReader
  2. Uso de la clase BufferedReader
  3. Usando la clase Escáner

Método 1: usar la clase InputStreamReader

Un InputStreamReader convierte flujos de bytes en flujos de caracteres. Lee flujos de bytes y los decodifica en caracteres utilizando el conjunto de caracteres especificado. Si no se especifica ningún conjunto de caracteres, utiliza el conjunto de caracteres predeterminado . 

En este método, el nombre de archivo proporcionado por el usuario se pasa como un parámetro para la iniciación del objeto de archivo. Este objeto de archivo se pasa nuevamente como un parámetro para la iniciación del objeto InputStream. El objeto InputStreamReader se inicia pasando el objeto InputStream. InputStreamReader convierte flujos de bytes en flujos de caracteres. El flujo de caracteres obtenido se almacena en la array de caracteres mediante el método read() de la clase InputStreamReader. Finalmente, la array de caracteres se convierte en String. 

Implementación: 

Java

import java.util.*;
import java.io.*;
public class InputStreamReaderDemo {
  
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path: ");
        String filename = s.nextLine();
        
        // Creating a File object
        File file = new File(filename);
        try {
            // Creating an InputStream object
            InputStream is = new FileInputStream(file);
            
            // creating an InputStreamReader object
            InputStreamReader isr = new InputStreamReader(is);
            
            // Creating a character array
            char charArray[] = new char[(int)file.length()];
            
            // Reading the contents of the reader
            isr.read(charArray);
            
            // Converting character array to a String
            String contents = new String(charArray);
            System.out.println(contents);
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

Producción:

Método 2: usar la clase BufferedReader

La clase BufferedReader se usa para leer el flujo de caracteres de la fuente de entrada (archivo aquí). El método readLine() de la clase BufferedReader lee cada línea del contenido del objeto lector de búfer. 

En el siguiente ejemplo, el usuario especifica el nombre de archivo que se pasa al constructor de InputStream para la iniciación del objeto InputStream. El objeto InputStream se pasa al constructor InputStreamReader. El objeto BufferedReader se crea mediante el objeto InputStreamReader. Se crea un objeto StringBuffer que almacena las líneas leídas del objeto BufferedReader. Finalmente, el contenido del objeto StringBuffer se convierte en String.

Implementación:

Java

// Importing java libraries
import java.io.*;
import java.util.Scanner;
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path: ");
        String filename = s.nextLine();
        try {
            // Creating an InputStream object
            InputStream is = new FileInputStream(filename);
  
            // creating an InputStreamReader object
            InputStreamReader isr
                = new InputStreamReader(is);
  
            // Creating a BufferedReader object
            BufferedReader br = new BufferedReader(isr);
            StringBuffer sb = new StringBuffer();
  
            String str;
  
            while ((str = br.readLine()) != null) {
                sb.append(str);
            }
            System.out.println(sb.toString());
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

Producción:

Método 3: Usar la clase Scanner

La clase Scanner se usa para leer la entrada de stdin. La clase Scanner tiene métodos para aceptar entradas de tipos primitivos como enteros, dobles, flotantes y strings. 

En el siguiente ejemplo, el usuario especifica el nombre de archivo que se pasa al constructor InputStream para la iniciación del objeto FileInputStream. Luego, el objeto FileInputStream se pasa al constructor de la clase Scanner. El contenido del objeto del escáner se itera y cada línea obtenida se agrega al objeto StringBuffer. Finalmente, el contenido de StringBuffer se convierte en String y se imprime en la salida estándar.

Implementación:

Java

// Importing java libraries
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Taking input from the user
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path: ");
        String filename = s.nextLine();
        try {
  
            // Creating an InputStream object
            FileInputStream fis
                = new FileInputStream(filename);
  
            // Creating a Scanner object
            Scanner sc = new Scanner(fis);
  
            // Reading line by line from scanner to
            // StringBuffer
  
            StringBuffer sb = new StringBuffer();
            while (sc.hasNext()) {
                sb.append(sc.nextLine());
            }
  
            System.out.println(sb.toString());
        }
  
        // Catch block to handle exceptions
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

Producción

Publicación traducida automáticamente

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