Bienvenidos sean a este post, hoy hablaremos sobre algunas funciones que nos permiten realizar algunas tareas adicionales sobre nuestros archivos.

Anuncios

La primera funcion es tmpfile la cual devuelve un identificador para un archivo temporal, lo abre en modo lectura/escritura, y este archivo es removido (borrado) cuando tu programa termina.

Anuncios

La funcion flush ejecuta todas las escrituras pendientes para un archivo, al igual que la funcion write se puede llamar como una funcion, io.flush, para vaciar el archivo de salida actual o como un metodo, f:flush, para vaciar un archivo f particular.

Anuncios

La funcion seek puede tanto conseguir como setear la posicion actual de un archivo, su forma general es:

f:seek(whence, offset) 
Anuncios

El parametro whence es una cadena que especifica como interpretar a offset, sus valores validos son “set” cuando los offsets son interpretados desde el comienzo del archivo, “cur” cuando los offsets son interpretados de la posicion actual del archivo y “end” cuando los offsets son interpretados desde el final del archivo, independientemente del valor de whence la llamada devuelve la posicion actual final del archivo, medido en bytes desde el comienzo del archivo, el valor predeterminado de whence es “cur” y para offset es cero, por lo tanto:

file:seek()      -- Devuelve la posicion actual del archivo
file:seek("set") -- Resetea la posicion al inicio del archivo
file:seek("end") -- Setea la poscion al final del archivo
Anuncios

En el segundo caso que vimos, set, no solo resetea la posicion en el archivo sino que devuelve el valor cero, y en el ultimo caso no solo nos lleva al final del archivo sino que tambien devuelve su tamaño.

Anuncios

Veamos la siguiente funcion que consigue el tamaño del archivo sin cambiar la posicion actual:

function fsize(archivo)
	local actual = archivo:seek()	   -- consigue la pos. actual
	local tamano = archivo:seek("end") -- consigue el tam. actual
	archivo:seek("set", actual)	   -- restaura la posicion
	return tamano
end
Anuncios

Como pueden ver es una funcion bastante simple donde primero almacena la posicion actual, luego consigue el tamaño del archivo, con el tamaño conseguido restaura la posicion anterior y por ultimo mostramos el tamaño (tamano).

Nota: Todas estas funciones en caso de error devuelven un valor nil y un mensaje de error.
Anuncios

En resumen, hoy hemos visto algunas operaciones adicionales para manejar archivos, una para tener un archivo temporal, otra para “limpiar” nuestras escrituras pendientes y una para buscar en el archivo, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00