Introducción al trabajo con el sistema de archivos en Kotlin
Trabajar con el sistema de archivos es una de las tareas básicas al desarrollar aplicaciones en Kotlin. Ya sea una aplicación de consola, un proyecto de servidor o una aplicación móvil para Android, casi con toda seguridad necesitará leer, escribir, mover o eliminar archivos. Kotlin, al ser un lenguaje moderno que funciona sobre la JVM, proporciona todas las capacidades de la biblioteca estándar de Java, pero además añade sus propias extensiones convenientes y azúcar sintáctico.
En este artículo, analizaremos en detalle cómo trabajar eficientemente con el sistema de archivos en Kotlin. Aprenderá cómo crear y eliminar archivos y directorios, leer y escribir datos, recorrer directorios y manejar excepciones. Todos los ejemplos de código estarán escritos en Kotlin puro sin utilizar bibliotecas de terceros.
Clases principales y enfoques
En Kotlin, para trabajar con el sistema de archivos se utilizan dos API principales:
- java.io.File — la API clásica de Java, que Kotlin extiende con sus funciones de extensión.
- java.nio.file.Path y java.nio.file.Files — una API más moderna y funcional de Java NIO.
Ambos enfoques son totalmente compatibles con Kotlin, pero el segundo (NIO) se recomienda para proyectos nuevos, ya que proporciona capacidades más ricas y un mejor rendimiento.
Creación de archivos y directorios
Empecemos por lo más simple: la creación de un archivo. En Kotlin esto se hace de manera muy concisa:
import java.io.File
fun main() { val file = File("example.txt") // Creación de archivo (devuelve true si el archivo fue creado) val created = file.createNewFile() if (created) { println("Archivo creado: ${file.absolutePath}") } else { println("El archivo ya existe") } // Creación de directorio val dir = File("myDirectory") val dirCreated = dir.mkdir() // o mkdirs() para crear directorios anidados println("Directorio creado: $dirCreated")}Observe el método mkdirs() — creará todos los directorios padre faltantes, a diferencia de mkdir(), que solo crea el último directorio en la ruta.
Lectura de archivos
Kotlin proporciona extensiones elegantes para leer el contenido de los archivos. Veamos varias formas:
import java.io.File
fun readExamples() { val file = File("data.txt") // Lectura de todo el archivo en una cadena val content: String = file.readText() println("Contenido del archivo:$content") // Lectura línea por línea en una lista val lines: List<String> = file.readLines() lines.forEach { println("Línea: $it") } // Lectura de todos los bytes val bytes: ByteArray = file.readBytes() println("Tamaño del archivo: ${bytes.size} bytes") // Lectura usando Buffered (para archivos grandes) file.forEachLine { line -> println("Procesando línea: $line") }}Para archivos grandes, es mejor usar forEachLine o bufferedReader() para no cargar todo el archivo en memoria.
Escritura en archivos
La escritura de datos en un archivo también es intuitiva:
import java.io.File
fun writeExamples() { val file = File("output.txt") // Escritura de una cadena (sobrescribe el archivo) file.writeText("¡Hola, Kotlin!Segunda línea") // Añadir al final del archivo file.appendText("Tercera línea (añadida)") // Escritura de una lista de cadenas val lines = listOf("Línea 1", "Línea 2", "Línea 3") file.writeText(lines.joinToString("")) // Escritura de bytes val data = byteArrayOf(72, 101, 108, 108, 111) // "Hello" en ASCII file.writeBytes(data)}Si necesita más control (por ejemplo, especificar la codificación), use
Blogs
Book Recommendations
Leer también
Optimización del rendimiento de aplicaciones C#: para principiantes
Problemas de Go en LeetCode: cómo resolverlos y qué estudiar
Swift para programación de sistemas: una nueva y potente herramienta
Trabajo con fechas y horas en Java: guía completa
Cómo aprobar una entrevista de C#: las mejores preguntas de la A a la Z