Trabajo con el sistema de archivos en Kotlin: en la práctica

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



Trabajar con el sistema de archivos es una de las tareas básicas en cualquier lenguaje de programación. En Kotlin, gracias a su sintaxis concisa y las potentes extensiones de la biblioteca estándar de Java, realizar operaciones con archivos y directorios se vuelve simple e intuitivo.



En este artículo, analizaremos en la práctica las operaciones principales: creación, lectura, escritura, copia, movimiento y eliminación de archivos y carpetas. Todos los ejemplos están escritos en Kotlin y listos para usar en tus proyectos. El material será útil tanto para principiantes como para desarrolladores experimentados que deseen refrescar conocimientos o encontrar soluciones óptimas para tareas cotidianas.



Clases principales e importaciones



Para trabajar con el sistema de archivos en Kotlin se utilizan clases del paquete java.io (por ejemplo, File) y java.nio.file (por ejemplo, Path, Files). Las recomendaciones modernas prefieren java.nio.file, ya que esta API es más eficiente y conveniente.



Para todos los ejemplos necesitaremos las siguientes importaciones:



import java.io.Fileimport java.nio.file.Pathimport java.nio.file.Pathsimport java.nio.file.Filesimport java.nio.file.StandardCopyOptionimport java.nio.file.StandardOpenOption


Creación de archivo y directorio



Empecemos con lo más simple: crear un nuevo archivo y carpeta.



// Creación de directorioval dir = File("my_directory")if (!dir.exists()) {    dir.mkdirs() // mkdirs() crea todos los directorios padre faltantes    println("Directorio creado: ${dir.absolutePath}")}

// Creación de archivoval file = File(dir, "example.txt")if (!file.exists()) { file.createNewFile() println("Archivo creado: ${file.absolutePath}")}


Observa: mkdirs() crea toda la cadena de directorios si no existe. mkdir() solo crea el último directorio y devuelve false si la carpeta padre no existe.



Lectura y escritura de archivos



Estas son las operaciones más comunes. Kotlin ofrece varias formas elegantes para trabajar con el contenido de los archivos.



Escritura en un archivo



val path = Paths.get("my_directory/write_example.txt")

// Cadena para escribirval content = "¡Hola, mundo! Esta línea está escrita en el archivo.Segunda línea."

// Escritura simple de cadena (sobrescribe el archivo)Files.writeString(path, content)

// Escritura de lista de líneasval lines = listOf("Línea 1", "Línea 2", "Línea 3")Files.write(path, lines)

// Añadir al final del archivoval additionalContent = "Línea adicional."Files.writeString(path, additionalContent, StandardOpenOption.APPEND)


El método Files.writeString() apareció en Java 11 y está disponible en Kotlin/JVM. Si necesitas soporte para versiones más antiguas, usa Files.write() especificando la codificación.



Lectura de un archivo



val path = Paths.get("my_directory/write_example.txt")

// Lectura de todo el contenido en una cadenaval fullContent = Files.readString(path)println("Contenido del archivo:$fullContent")

// Lectura en una lista de líneasval allLines: List<String> = Files.readAllLines(path)allLines.forEachIndexed { index, line -> println("Línea ${index + 1}: $line")}

// Lectura usando Stream (para archivos grandes)Files.lines(path).use { stream -> stream.forEach { line -> println("Procesando línea: $line") }}


La construcción .use { ... } garantiza el cierre del flujo después del procesamiento, lo cual es especialmente importante al trabajar con archivos grandes.



Copia, movimiento y renombrado



Estas operaciones también se implementan a través de java.nio.file.Files.



Copia de archivo



val source = Paths.get("my_directory/example.txt")val destination = Paths.get("my_directory/backup/example_copy.txt")

Blogs

Book Recommendations