Lua – Predecir el tamaño de la concatenación de 2 archivos

Este programa hace algo que podemos hacer con bash perfectamente y con mil lenguajes de programación. La idea es pasar como parámetro al programa escrito en Lua 2 nombres de archivos:

Aquí el código:

nArchivoEntrada1 = arg[1] -- Nombre archivo de entrada argumento 1
nArchivoEntrada2 = arg[2] -- Nombre archivo de entrada argumento 2

if ( nArchivoEntrada1 == nil or nArchivoEntrada2 == nill) then
        -- Aquí entra cuando no se han ingresado los 2 argumentos necesarios
        print("Uso: lua joiner.lua archivo1 archivo2")
else
        -- Aquí entra cuando se han pasado los 2 argumentos y calcula tamaño suma
        cArchivoEntrada1 = io.open(nArchivoEntrada1, "rb") -- Contenido archivo de entrada 1
        cArchivoEntrada2 = io.open(nArchivoEntrada2, "rb") -- Contenido archivo de entrada 2

        sArchivoEntrada1 = cArchivoEntrada1:seek("end") -- Size (Tamaño) archivo de entrada 1
        sArchivoEntrada2 = cArchivoEntrada2:seek("end") -- Size (Tamaño) archivo de entrada 2
        total = sArchivoEntrada1 + sArchivoEntrada2

        print(sArchivoEntrada1 .. " bytes " .. nArchivoEntrada1)
        print(sArchivoEntrada2 .. " bytes " .. nArchivoEntrada2)
        print(total)

        cArchivoEntrada1:close() -- Chapamos la apertura de lectura del archivo1
        cArchivoEntrada2:close() -- Chapamos la apertura de lectura del archivo2

El resultado que nos interesa es la suma de bytes de los 2 archivos pasados como parametro.

Para ejecutarlo se necesita instalar lua. El tema es que realmente esto hace algo muy sencillo y más que un programa es una función o puede convertirse en función.

Digamos que algunas veces en un programa en Lua necesitaremos de concatenar por ejemplo 2 archivos. Este código sirve para saber cuanto ocupará el resultado de concatenar 2 archivos.

Evidentemente podemos usar cat para concatenar 2 archivos y volcar la salida en otro. La cosa es que dentro de un programa si necesitas esto lo mismo necesitas hacer cosas “entre medias”.

Concatenar un archivo binario, luego otro, luego otro, … es sencillo en bash. Recuperar luego esos archivos requiere de saber lo que ocupaban.

Este pequeño código no sirve ni para concatenar archivos. Solamente sirve para saber el tamaño que ocuparán 2 archivos que pretendemos concatenar de algún modo sin datos extra.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *