En este módulo, aprenderemos cómo manejar archivos en Lua. La capacidad de leer y escribir archivos es fundamental para muchas aplicaciones, desde el procesamiento de datos hasta la configuración de scripts. Vamos a cubrir los conceptos básicos de la entrada/salida de archivos, incluyendo cómo abrir, leer, escribir y cerrar archivos.

Contenido

Abrir Archivos

Para trabajar con archivos en Lua, primero debemos abrirlos. Lua proporciona la función io.open para este propósito. Esta función toma dos argumentos: el nombre del archivo y el modo en el que queremos abrirlo.

Modos de Apertura

  • "r": Lectura (read). El archivo debe existir.
  • "w": Escritura (write). Crea un archivo nuevo o sobrescribe uno existente.
  • "a": Añadir (append). Escribe al final del archivo si existe, o crea uno nuevo.
  • "r+": Lectura/Escritura. El archivo debe existir.
  • "w+": Lectura/Escritura. Crea un archivo nuevo o sobrescribe uno existente.
  • "a+": Lectura/Añadir. Escribe al final del archivo si existe, o crea uno nuevo.

Ejemplo

local file = io.open("example.txt", "r")
if not file then
    print("Error al abrir el archivo")
else
    print("Archivo abierto correctamente")
end

Leer Archivos

Una vez que hemos abierto un archivo, podemos leer su contenido. Lua proporciona varias funciones para leer archivos:

  • file:read("*a"): Lee todo el archivo.
  • file:read("*l"): Lee la siguiente línea.
  • file:read(n): Lee los siguientes n caracteres.

Ejemplo

local file = io.open("example.txt", "r")
if file then
    local content = file:read("*a")
    print(content)
    file:close()
end

Escribir Archivos

Para escribir en un archivo, utilizamos la función file:write. Esta función toma una cadena de texto como argumento y la escribe en el archivo.

Ejemplo

local file = io.open("example.txt", "w")
if file then
    file:write("Hola, mundo!")
    file:close()
end

Cerrar Archivos

Es importante cerrar los archivos después de haber terminado de trabajar con ellos para liberar recursos. Utilizamos la función file:close para cerrar un archivo.

Ejemplo

local file = io.open("example.txt", "r")
if file then
    -- Realizar operaciones con el archivo
    file:close()
end

Manejo de Errores

El manejo de errores es crucial cuando se trabaja con archivos. Siempre debemos verificar si las operaciones de apertura, lectura y escritura han sido exitosas.

Ejemplo

local file, err = io.open("example.txt", "r")
if not file then
    print("Error al abrir el archivo: " .. err)
else
    local content = file:read("*a")
    if not content then
        print("Error al leer el archivo")
    else
        print(content)
    end
    file:close()
end

Ejercicios Prácticos

Ejercicio 1: Leer un Archivo

Escribe un script que lea el contenido de un archivo llamado data.txt y lo imprima en la consola.

Solución

local file = io.open("data.txt", "r")
if file then
    local content = file:read("*a")
    print(content)
    file:close()
else
    print("Error al abrir el archivo")
end

Ejercicio 2: Escribir en un Archivo

Escribe un script que escriba la cadena "Lua es genial!" en un archivo llamado output.txt.

Solución

local file = io.open("output.txt", "w")
if file then
    file:write("Lua es genial!")
    file:close()
else
    print("Error al abrir el archivo")
end

Ejercicio 3: Manejo de Errores

Modifica el script del Ejercicio 1 para manejar errores de manera adecuada.

Solución

local file, err = io.open("data.txt", "r")
if not file then
    print("Error al abrir el archivo: " .. err)
else
    local content = file:read("*a")
    if not content then
        print("Error al leer el archivo")
    else
        print(content)
    end
    file:close()
end

Conclusión

En esta sección, hemos aprendido cómo manejar archivos en Lua. Hemos cubierto cómo abrir, leer, escribir y cerrar archivos, así como el manejo de errores. Estos conceptos son fundamentales para cualquier programador que necesite trabajar con archivos en sus aplicaciones. En el próximo módulo, exploraremos conceptos más avanzados como las corutinas y la programación orientada a objetos en Lua.

© Copyright 2024. Todos los derechos reservados