(Notas de Lua): I / O do arquivo Lua

índice

I / O do arquivo Lua

Modo simples

Modo completo


I / O do arquivo Lua

  • Biblioteca Lua I / O para leitura e processamento de arquivos
Modelo simples Ter um arquivo de entrada atual e um arquivo de saída atual e fornecer operações relacionadas a esses arquivos
Modelo completo Use o identificador de arquivo externo para alcançar. Ele define todas as operações de arquivo como métodos de manipulação de arquivo em uma forma orientada a objetos
  • O modo simples é mais adequado para operações simples de arquivo. Mas ao fazer algumas operações de arquivo avançadas, o modo simples parece ser inadequado.
    • Por exemplo, para operações como a leitura de vários arquivos ao mesmo tempo, o modo completo é mais apropriado.
  • A instrução de operação de arquivo aberto é a seguinte:
file = io.open (filename [, mode])
  • Os valores de modo são:
r Para abrir o arquivo como somente leitura, ele deve existir.
W Abra o arquivo somente gravação, se o arquivo existir, o comprimento do arquivo é limpo para 0, ou seja, o conteúdo do arquivo desaparecerá. Se o arquivo não existir, crie o arquivo.
uma Abra o arquivo somente gravação no modo anexar. Se o arquivo não existir, ele será criado.Se o arquivo existir, os dados gravados serão adicionados ao final do arquivo, ou seja, o conteúdo original do arquivo será retido. (Símbolo EOF reservado)
r + Para abrir o arquivo no modo de leitura e gravação, o arquivo deve existir.
w + Abra um arquivo legível e gravável. Se o arquivo existir, o comprimento do arquivo será zerado, ou seja, o conteúdo do arquivo desaparecerá. Se o arquivo não existir, crie o arquivo.
a + Semelhante a um, mas este arquivo é legível e gravável
b Modo binário, se o arquivo for um arquivo binário, você pode adicionar b
+ O sinal indica que o arquivo pode ser lido ou escrito

Modo simples

  • O modo simples usa E / S padrão ou usa um arquivo de entrada atual e um arquivo de saída atual.
  • A seguir está o código do arquivo file.lua, o arquivo a ser operado é test.lua (você precisa criar o arquivo se ele não existir), o código é o seguinte:
-- 以只读方式打开文件
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)

输出:-- test.lua 文件
  • No exemplo acima, o método io. "X" é usado. Não há parâmetro em io.read () . O parâmetro pode ser um dos seguintes:
modo descrição
"* n" Leia um número e devolva-o. Exemplo: file.read ("* n")
"*uma" Leia todo o arquivo a partir da posição atual. Exemplo: file.read ("* a")
"* l" (padrão) Leia a próxima linha e retorne nil no final do arquivo (EOF). Exemplo: file.read ("* l")
número Retorna uma string com o número especificado de caracteres ou nulo em EOF. Exemplo: file.read (5)
  • Outros métodos io são:
io.tmpfile () Retorna um identificador de arquivo temporário, o arquivo é aberto no modo de atualização e excluído automaticamente quando o programa termina
io.type (arquivo): Verifique se obj é um identificador de arquivo utilizável
io.flush (): Grave todos os dados do buffer no arquivo
io.lines (nome de arquivo opcional) Retorne uma função iterativa, cada chamada obterá uma linha de conteúdo no arquivo, quando chegar ao final do arquivo retornará nil, mas o arquivo não será fechado

Modo completo

  • Processe vários arquivos ao mesmo tempo. É necessário usar o método file: function_name em vez do método io.function_name. O exemplo a seguir demonstra como processar o mesmo arquivo ao mesmo tempo:
-- 以只读方式打开文件
file = io.open("test.lua", "r")

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

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

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

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

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

-- test.lua 文件
  • Os parâmetros de leitura são consistentes com o modo simples.
  • Outros métodos:
arquivo: buscar (opcional de onde, deslocamento opcional)
  • Defina e obtenha a posição atual do arquivo. Se for bem-sucedido, ele retornará a posição final do arquivo (em bytes). Se falhar, ele retornará nil mais uma mensagem de erro. O valor do parâmetro whyce pode ser:

    • "set": começa do início do arquivo
    • "cur": começa da posição atual [padrão]
    • "fim": começa a partir do fim do arquivo
    • deslocamento: o padrão é 0
    • Sem o parâmetro arquivo: busca () retorna a posição atual, arquivo: busca ("set") localiza no início do arquivo, arquivo: busca ("fim") localiza no final do arquivo e retorna o tamanho do arquivo
arquivo: flush ()
  • Grave todos os dados do buffer no arquivo
io.lines (nome de arquivo opcional)
  • :打开指定的文件filename为读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件。
    若不带参数时io.lines() <=> io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件,如:

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

  print(line)

end

 

  • 以下实例使用了 seek 方法,定位到文件倒数第 25 个位置并使用 read 方法的 *a 参数,即从当期位置(倒数第 25 个位置)读取整个文件。
-- 以只读方式打开文件
file = io.open("test.lua", "r")

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

-- 关闭打开的文件
file:close()
</pre>
<p>我这边输出的结果是:</p>
<pre>
st.lua 文件末尾--test

【转载】原文链接:https://www.runoob.com/lua/lua-file-io.html

Acho que você gosta

Origin blog.csdn.net/baidu_41388533/article/details/108504960
Recomendado
Clasificación