Básicamente, kotlin.io proporciona una API agradable y limpia para leer y escribir archivos. En este artículo, vamos a discutir cómo leer archivos usando inputReader en Kotlin. Una forma de hacerlo es usando inputreader . Veremos cómo hacerlo en este artículo.
Ejemplo
Hay muchas maneras de leer un archivo, pero es muy importante comprender la motivación detrás de ellas para poder usar la correcta para nuestro propósito. Primero, intentaremos obtener el flujo de entrada del archivo y usaremos el lector para leer el contenido:
Kotlin
import java. io. File import java . io. InputStream fun main (args: Array<String>) { val inputStream: InputStream = File ("gfg.txt").inputStream() val inputString = inputStream.reader().use {it.readText()} println (inputString) }
En el bloque de código anterior, gfg.txt es simplemente un archivo que queremos leer. El archivo se encuentra en la misma carpeta que nuestro archivo de código fuente. Si necesitamos leer un archivo ubicado en una carpeta diferente, se parece a lo siguiente:
File ("/path/to/file/gfg.txt")
Este fragmento de código simplemente toma todo el texto del archivo y lo imprime en la consola. Otra forma de leer el contenido del archivo es creando directamente un lector del archivo como lo hacemos en este código:
Kotlin
import java.io.File fun main (args: Array<String>) { val inputString = File("gfg.txt").reader().use{it.readText()} println (inputString) }
La salida de los dos bloques de código anteriores será simplemente el texto del archivo tal como está. En nuestro caso, fue de la siguiente manera:
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.
Ahora, ¿qué pasa si queremos leer el archivo línea por línea porque queremos hacer algo de procesamiento en cada línea? En ese caso, usamos el método useLines() en lugar de use(). Mira el siguiente ejemplo, donde obtenemos un flujo de entrada del archivo y usamos el método useLines() para obtener cada línea una tras otra:
Kotlin
import java.io.File import java.io.InputStream fun main (args: Array<String>) { val listOfLines = mutableListof<String> () val inputStream: InputStream = File ("gfg.txt").inputStream() inputStream.reader().useLines { lines -> lines.forEach { listOfLines.add (it) } listOfLines.forEach{println("$ "+ it )} }
Alternativamente, si deseamos usar un lector directamente en el archivo, hacemos esto:
Kotlin
import java.io.File fun main (args: Array<String>){ val listOfLines = mutableListOf<String>() File ("gfg.txt").reader().useLines{ lines ->lines.forEach { listOfLines.add (it) } } listOfLines.forEach{println("$ " + it} }
La salida, en este caso, será la siguiente:
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.
¿Notaste que usamos los métodos use() y useLines() para leer el archivo? La llamada a la Cerrable. use() cerrará automáticamente la entrada al final de la ejecución de la lambda. Ahora, por supuesto, podemos usar Reader.readText() , pero eso no cierra la secuencia después de la ejecución. Hay otros métodos además de use(), como Reader.readText() , etc., que se pueden usar para leer el contenido de una secuencia o archivo. La decisión de usar cualquier método se basa en si queremos que la transmisión se cierre por sí sola después de la ejecución, o si queremos manejar el cierre de los recursos, y si queremos o no leer desde una transmisión o directamente desde el archivo.
BufferedReader lee un par de caracteres a la vez del flujo de entrada y los almacena en el búfer. Por eso se llama BufferedReader. Por otro lado, Input Reader lee solo un carácter del flujo de entrada y los caracteres restantes aún permanecen en el flujo. No hay buffer en este caso. Esta es la razón por la que BufferedReader es rápido, ya que mantiene un búfer, y la recuperación de datos del búfer siempre es más rápida en comparación con la recuperación de datos del disco.
Publicación traducida automáticamente
Artículo escrito por eralokyadav2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA