Leer desde archivos usando BufferedReader en Kotlin

En Kotlin, BufferedReader almacena algunos caracteres a medida que los lee en el búfer. Esto hace que la lectura sea más rápida y, por lo tanto, más eficiente. En este artículo, entenderemos cómo usar BufferedReader para leer el contenido de un archivo. 

Nota : para leer archivos con InputReader, consulte Leer archivos con InputReader en Kotlin

Ejemplo

Podemos adjuntar directamente un BufferedReader al archivo y leer el contenido de todo el archivo, como en el siguiente código:

Kotlin

import java.do.File
import java.in.InputStream
  
fun main (args: Array<String>) {
  val inputString = File ("example.txt").bufferedReader ().use {
    it.readText () 
  }
  println (inputString)
}

También podemos ir línea por línea sobre los contenidos que necesitamos para poder procesar cada línea individualmente. En el siguiente código, vamos línea por línea y agregamos un carácter al principio y la longitud de la string después del carácter:

Kotlin

import java.io.File
Import java.io.InputStream
  
fun main (args: Array<String>){
  val listOfLines = mutableListof<string> ()
  File ("example.txt").bufferedReader().useLines {
    lines->lines.forEach{
      var x = "> (" + it.length + ") " + it;
      listOfLines.add (x)
    }
  }
  listoflines.forEach{println(it)}
}

En los bloques de código anteriores, adjuntamos directamente el lector al archivo. Sin embargo, hay casos en los que necesitamos tomar un flujo de datos. En ese escenario, podemos obtener un flujo de entrada del archivo que queremos leer y luego adjuntarle un BufferedReader. En el siguiente código, intentamos leer línea por línea del flujo de entrada del archivo usando un BufferedReader:

Kotlin

import java.io.File
import java.io.InputStream
  
fun main (args: Array<String>){
  val listofLines = mutableListof<String> ()
  val inputStream: InputStream = File ("example.txt").inputStream()
  inputStream.bufferedReader().useLines{
    lines -> lines.forEach {
      var x = "> (" + it.length + ") " + it;
      listOfLines.add(x)
    }
  }
  listofLines.forEach{ println(it) }
}

Aquí está el resultado cuando intentamos leer todo el contenido del archivo de una sola vez:

Producción:

GeeksforGeeks.org was created with a goal in mind to provide well written, well thought and well explained solutions for selected questions.
The core team of five super geeks constituting of technology lovers and computer science enthusiasts have been constantly working in this direction.
The content on GeeksforGeeks has been divided into various categories to make it easily accessible for the users.
Whether you want to learn algorithms, data structures or it is the programming language on it's own which interests you.
GeeksforGeeks has covered everything. 
Even if you are looking for Interview preparation material. 
GeeksforGeeks has a vast set of company-wise interview experiences to learn from.
that gives a user insights into the recruitment procedure of a company. 
Adding to this, it serves as a perfect platform for users to share their knowledge via contribute option.

La salida se parece al archivo, ignorando el juego de caracteres. También podemos especificar el juego de caracteres deseado, como lo hacemos en el siguiente código si es necesario:

bufferedReader (charset).use ( it.readText () }

Cuando vamos línea por línea utilizando cualquiera de los ejemplos anteriores, obtenemos el siguiente resultado:

Producción:

> (140) GeeksforGeeks.org was created with a goal in mind to provide well written, well thought and well explained solutions for selected questions.
> (148) The core team of five super geeks constituting of technology lovers and computer science enthusiasts have been constantly working in this direction.
> (113) The content on GeeksforGeeks has been divided into various categories to make it easily accessible for the users.
> (120) Whether you want to learn algorithms, data structures or it is the programming language on it's own which interests you.
> (37) GeeksforGeeks has covered everything. 
> (59) Even if you are looking for Interview preparation material. 
> (81) GeeksforGeeks has a vast set of company-wise interview experiences to learn from.
> (71) that gives a user insights into the recruitment procedure of a company. 
> (105) Adding to this, it serves as a perfect platform for users to share their knowledge via contribute option.

¿Como funciona?

El uso de InputStream nos ayuda a obtener una secuencia del archivo que deseamos leer. Sin embargo, también podemos leer directamente desde el archivo. En cualquier caso, BufferedReader sigue conservando algunos datos que está leyendo en su búfer para una operación más rápida, lo que aumenta la eficiencia general de la operación de lectura, en comparación con cuando se usa InputReader. Usamos el método use() y/o useLines() en lugar de Reader.readText() y así sucesivamente para que cierre automáticamente el flujo de entrada al final de la ejecución, que es una forma mucho más limpia y responsable de manejar I /O de archivos. Sin embargo, si es necesario, uno puede usar un método como Reader.readText() cuando quiera manejar la apertura y el cierre de la transmisión por su cuenta.

Publicación traducida automáticamente

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