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

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



Trabajar con el sistema de archivos es una de las tareas fundamentales en el desarrollo de software. Kotlin, como lenguaje moderno, ofrece herramientas potentes y concisas para gestionar archivos y directorios. Gracias a su compatibilidad total con Java, puedes usar tanto las bibliotecas clásicas de Java (java.io.File, java.nio.file) como las extensiones de Kotlin, que hacen que el código sea más legible y seguro.



En este artículo, veremos las operaciones principales con el sistema de archivos en Kotlin: creación, lectura, escritura, copia y eliminación de archivos y carpetas. Aprenderás a usar tanto las clases estándar de Java como el estilo Kotlin para escribir código eficiente.



Clases principales y extensiones de Kotlin para trabajar con archivos



Kotlin no tiene su propia biblioteca separada para trabajar con el sistema de archivos, pero proporciona muchas funciones de extensión útiles para la clase java.io.File. Estas funciones hacen que el código sea más breve y expresivo. A continuación se enumeran las más importantes:



  • readText() — lee todo el archivo como una cadena.
  • readLines() — lee el archivo línea por línea y devuelve una lista de cadenas.
  • writeText() — escribe una cadena en el archivo (sobrescribe).
  • appendText() — añade una cadena al final del archivo.
  • bufferedReader() — devuelve un BufferedReader para una lectura eficiente.
  • bufferedWriter() — devuelve un BufferedWriter para una escritura eficiente.
  • inputStream() y outputStream() — para trabajar con datos binarios.
  • copyTo() — copia un archivo a otra ubicación.
  • deleteRecursively() — elimina recursivamente un archivo o directorio.


Ejemplo de uso:

import java.io.File

fun main() { val file = File("example.txt")

// Escritura de texto en el archivo file.writeText("¡Hola, Kotlin!")

// Lectura de texto desde el archivo val content = file.readText() println(content) // Mostrará: ¡Hola, Kotlin!

// Añadir texto file.appendText("Nueva línea") println(file.readText())}


Uso de Java NIO (Path y Files)

Para operaciones más complejas, como mover, copiar con opciones o trabajar con enlaces simbólicos, se recomienda usar Java NIO (java.nio.file.Path y java.nio.file.Files). Kotlin también soporta estas clases sin ninguna limitación.



import java.nio.file.Filesimport java.nio.file.Pathimport java.nio.file.Paths

fun main() { val path: Path = Paths.get("nio_example.txt") val content = "Texto para NIO"

// Escritura con Files.write Files.write(path, content.toByteArray())

// Lectura con Files.readAllLines val lines = Files.readAllLines(path) lines.forEach { println(it) }}


Lectura y escritura de archivos: mejores prácticas



Al trabajar con archivos, es importante tener en cuenta el tamaño de los datos y los posibles errores (por ejemplo, archivo inexistente o permisos de acceso). Kotlin proporciona formas convenientes de manejar excepciones con use y runCatching.



Lectura de archivos grandes

Para leer archivos grandes (de más de unos pocos megabytes), no se recomienda usar readText(), ya que carga todo el archivo en memoria. En su lugar, utiliza el procesamiento por flujo:



import java.io.File

fun readLargeFile(filePath: String) { val file = File(filePath) file.bufferedReader().use { reader -> var line: String? while (reader.readLine().also { line = it } != null) { // Procesamos cada línea println(line) } }}


La construcción

Blogs

Book Recommendations