Trabajo con el sistema de archivos en Kotlin: guía completa para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con el sistema de archivos en Kotlin

\n\n

Trabajar con el sistema de archivos es una de las tareas básicas que enfrenta todo desarrollador. Independientemente de si escribes una aplicación de consola, un servicio web o una aplicación móvil para Android, la capacidad de leer, escribir y gestionar archivos es una habilidad obligatoria. En este artículo, analizaremos en detalle cómo trabajar con el sistema de archivos en Kotlin, utilizando tanto las herramientas estándar de Java como las capacidades modernas del lenguaje.

\n\n

Kotlin es un lenguaje de programación moderno, conciso y seguro que es completamente compatible con Java. Esto significa que puedes usar todas las capacidades de java.io y java.nio.file, pero escribiendo código mucho más corto y expresivo. El artículo está dirigido a desarrolladores principiantes que ya están familiarizados con los conceptos básicos de la sintaxis de Kotlin.

\n\n

Clases y métodos principales para trabajar con archivos

\n\n

Antes de pasar a la práctica, conozcamos las clases clave que necesitarás para trabajar con el sistema de archivos en Kotlin:

\n\n
    \n
  • java.io.File — la clase principal para representar archivos y directorios.
  • \n
  • java.nio.file.Path — una interfaz moderna para trabajar con rutas.
  • \n
  • java.nio.file.Files — una clase de utilidad con muchos métodos estáticos.
  • \n
  • java.io.BufferedReader y java.io.BufferedWriter — para lectura y escritura línea por línea.
  • \n
\n\n

Kotlin también tiene sus propias extensiones convenientes para la clase File, que hacen que el código sea aún más simple. Por ejemplo, las funciones readText(), writeText(), appendText() y otras.

\n\n

Creación de archivos y directorios

\n\n

Empecemos con lo más simple: la creación de un archivo. En Kotlin, esto se hace en una sola línea:

\n\n
import java.io.File\n\nfun main() {\n    val file = File("example.txt")\n    file.createNewFile() // crea el archivo si no existe\n    println("Archivo creado: ${file.absolutePath}")\n}
\n\n

Ten en cuenta: createNewFile() devuelve un Boolean — true si el archivo fue creado, y false si ya existe. Para crear directorios se utiliza el método mkdir() o mkdirs() (crea todas las carpetas padre faltantes):

\n\n
fun main() {\n    val dir = File("myFolder/subFolder")\n    if (dir.mkdirs()) {\n        println("Directorio creado: ${dir.absolutePath}")\n    } else {\n        println("No se pudo crear el directorio")\n    }\n}
\n\n

Lectura de datos desde un archivo

\n\n

Existen varias formas de leer un archivo en Kotlin. Veamos las más populares.

\n\n

Lectura de todo el archivo completo

\n\n

Si el archivo es pequeño, es conveniente leer su contenido en una sola cadena o lista de líneas:

\n\n
fun main() {\n    val file = File("readme.txt")\n    \n    // Lectura de todo el texto en una sola cadena\n    val text: String = file.readText()\n    println("Contenido del archivo:\\n$text")\n    \n    // Lectura línea por línea\n    val lines: List<String> = file.readLines()\n    lines.forEach { println("Línea: $it") }\n}
\n\n

El método readText() devuelve una cadena, y readLines() devuelve una lista de líneas. Ambos métodos cierran automáticamente el archivo después de la lectura, lo cual es seguro y conveniente.

\n\n

Lectura línea por línea con almacenamiento en búfer

\n\n

Para archivos grandes, es mejor usar BufferedReader para no cargar todo el archivo en la memoria:

\n\n
fun main() {\n    val file = File("large_file.txt")\n    file.bufferedReader().use { reader ->\n        var line: String?\n        while (reader.readLine().also { line = it } != null) {\n            println("Leyendo: $line")\n        }\n    }\n}
\n\n

La construcción .use { } garantiza que el recurso se cerrará después de que finalice el bloque, incluso si ocurre una excepción.

Blogs

Book Recommendations