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