Latest web development tutorials

Lua archivo de E / S

Lua E / S bibliotecas de archivos de lectura y procesamiento. Dividido en patrones simples (como C), el modo completo.

  • Modo sencillo (modelo simple) tiene un archivo de entrada de corriente y un archivo de salida de corriente, y proveer para estas operaciones relacionadas con archivos.
  • Modo completo (modelo completo) usando un identificador de archivo externo de lograr. Está en una cara en forma de un objeto, todas las operaciones de archivo se definirán como un método de identificadores de archivo

En el modo simple de hacer algunas operaciones de archivos simples cuando más apropiado. Pero después de una operación de archivos avanzado, el modelo simple que parecía ser insuficiente. Por ejemplo, mientras que la lectura de esta operación varios archivos, utilice el modo completa es más adecuado.

La declaración de operación de archivo abierto es el siguiente:

file = io.open (filename [, mode])

Modo de valor son:

modo descripción
r Abierto archivo de sólo lectura, debe existir el archivo.
w Abra el archivo de sólo escritura, si existe el archivo, la longitud del archivo se borra a 0, es decir, el contenido del archivo desaparecerán. Si no existe el archivo, crear el archivo.
una En la disposición de sólo escritura se abre. Si no existe el archivo, la creación del archivo, si el archivo existe, se agregará los datos de escritura al final del archivo, se conservarán los contenidos del archivo original. (Carácter EOF reservado)
r + Tanto la lectura y la escritura para abrir un archivo, debe existir el archivo.
w + Abrir para leer y escribir archivos, si existe el archivo, la longitud del archivo de cero claro que los contenidos del archivo desaparecerá. Si no existe el archivo, crear el archivo.
a + Y una similar, pero este archivo es de lectura y escritura
b El modo binario, si el archivo es un archivo binario, puede agregar b
+ Signo indica un archivo o bien puede leer y escribir

Modo simple

Modo simple utilizando el estándar de E / S o utilizar un archivo de entrada de corriente y un archivo de salida de corriente.

El siguiente es el código de archivo file.lua, test.lua operación de archivo (si es que no es necesario para crear el archivo), de la siguiente manera:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为 test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为 test.lua
io.output(file)

-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")

-- 关闭打开的文件
io.close(file)

Implementación del código anterior, se encuentra que la primera línea de la información test.ua archivo de salida y la última línea en el archivo lua añadir comentarios. Estoy aquí como salida es:

-- test.lua 文件

En el ejemplo anterior hemos utilizado io "x", en el que io.read (), no tenemos parámetros, el parámetro puede ser una de la siguiente tabla:

modo descripción
"* N" Un número se lee y se la devolvió. Ejemplo: file.read ( "* n")
"* A" Leer todo el archivo desde su ubicación actual. Ejemplo: file.read ( "* a")
"* L" (por defecto) Lee la siguiente línea al final del archivo (EOF) en devuelve nil. Ejemplo: file.read ( "* l")
número Devuelve un número especificado de caracteres en la cadena, o cuando EOF devuelve nil. Ejemplo: file.read (5)

Otros métodos son io:

  • io.tmpfile (): devuelve un identificador para el archivo temporal, el archivo se abre en modo de actualización eliminan automáticamente cuando termina el programa

  • io.type (archivo): detectar si un archivo obj maneja disponibles

  • io.flush (): escribir almacena todos los datos en el archivo

  • io.lines (nombre de archivo opcional): Devuelve una función de repetidor, cada llamada obtendrá una línea en el archivo, cuando el final del archivo, devolverá nil, pero no cierra el archivo


Modo completo

Por lo general, tenemos que hacer frente a varios archivos al mismo tiempo. Tenemos que utilizar el archivo: function_name lugar io.function_name métodos. El siguiente ejemplo demuestra el mismo archivo al mismo tiempo como:

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

Implementación del código anterior, se encuentra que la primera línea de la información test.ua archivo de salida y la última línea en el archivo lua añadir comentarios. Estoy aquí como salida es:

-- test.lua 文件

leer los parámetros compatibles con el modo simple.

Otros métodos:

  • file: seek (de donde opcional, opcional offset): establece y recupera la posición actual del fichero, el éxito, devuelve la posición final del archivo (en bytes), no llega nada más se devuelve un mensaje de error.valores de los parámetros de donde pueden ser:

    • "Ajuste": Desde el principio del archivo
    • "Cur": A partir de la posición actual [por defecto]
    • "Fin": a partir de fin de archivo
    • offset: El valor por defecto es 0
    Sin archivo de parámetros: seek () devuelve la posición actual, file: seek ( "set") está dirigido a la cabecera del archivo, archivo: seek ( "fin") para localizar el final del archivo y devuelve el tamaño del archivo
  • archivo: flush (): escribir almacena todos los datos en el archivo

  • io.lines (nombre de archivo opcional): abrir el modo de lectura de archivos de nombre de archivo especificado y devuelve una función de repetidor, cada llamada presentará una línea, cuando el final del archivo, devolverá nil, y cerrar automáticamente el archivo.
    Si los parámetros de la correa (io.lines) <=> io.input (): líneas (); el dispositivo de entrada por defecto para leer el contenido, pero al final no se cierra el archivo, tales como

    for line in io.lines("main.lua") do
    
      print(line)
    
      end
    

En el siguiente ejemplo se utiliza buscar métodos para localizar la posición del fichero penúltima 25 y utilizar el método de lectura * un parámetro, leer todo el archivo desde la ubicación actual (la penúltima posición 25).

-- 以只读方式打开文件
file = io.open("test.lua", "r")

file:seek("end",-25)
print(file:read("*a"))

-- 关闭打开的文件
file:close()

Mi resultado se emite aquí:

st.lua 文件末尾--test