Latest web development tutorials

arquivo Lua I / O

Lua E / S bibliotecas para arquivos de leitura e processamento. Dividido em padrões simples (como C), modo completo.

  • Modo simples (modelo simples) tem um arquivo de entrada atual e um arquivo de saída de corrente, e fornecer para estas operações relacionadas a arquivos.
  • modo completo (modelo completo), utilizando um identificador de arquivo externo para alcançar. Ele está em um rosto sob a forma de um objeto, todas as operações de arquivo será definido como um método de identificadores de arquivo

No modo simples de fazer algumas operações de arquivo simples ao mais apropriado. Mas depois de algum operação de arquivo avançado, o modelo simples parecia ser insuficiente. Por exemplo, enquanto lendo esta operação vários arquivos, use o modo completa é mais adequado.

A declaração operação de arquivo aberto é a seguinte:

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

modo de valor são:

modo descrição
r Aberto arquivo somente leitura, o arquivo deve existir.
w Abra o arquivo somente para gravação, se existe o arquivo, o tamanho do arquivo é apagado a 0, ou seja, o conteúdo do arquivo irá desaparecer. Se o arquivo não existir, criar o arquivo.
um No arquivo somente para gravação adicional é aberta. Se o arquivo não existir, a criação do arquivo, se o arquivo existir, os dados de gravação será adicionado ao final do arquivo, o conteúdo do arquivo original será mantido. (Caractere EOF reservados)
r + Leitura e escrita para abrir um arquivo, o arquivo deve existir.
w + Abrir para ler e escrever arquivos, se existe o arquivo, o tamanho do arquivo de zero, claro que o conteúdo do arquivo irá desaparecer. Se o arquivo não existir, criar o arquivo.
a + E um semelhante, mas este arquivo é legível e gravável
b modo binário, se o arquivo é um arquivo binário, você pode adicioná-b
+ Sinal indica um arquivo pode ler e escrever

Modo simples

Modo simples usando o padrão I / O ou usar um arquivo de entrada atual e um arquivo de saída de corrente.

O que se segue é um código de arquivo file.lua, operação test.lua arquivo (se você não precisa criar o arquivo), como segue:

-- 以只读方式打开文件
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)

Implementação do código acima, você vai achar que a primeira linha de informações test.ua arquivo de saída e a última linha no arquivo adicionar Lua comentários. Estou aqui como saída é:

-- test.lua 文件

No exemplo acima foi utilizado io "x", em que io.read (), que não tem parâmetros, o parâmetro pode ser um dos seguinte tabela:

modo descrição
"* N" Um número é lido e ele retornou. Exemplo: file.read ( "* n")
"* Um" Leia todo o arquivo de seu local atual. Exemplo: file.read ( "* a")
"* L" (padrão) Lê a próxima linha no final do arquivo (EOF) na retorna nil. Exemplo: file.read ( "* l")
número Retorna um número especificado de caracteres na cadeia, ou quando EOF retorna nil. Exemplo: file.read (5)

Outros métodos de io são:

  • io.tmpfile (): retorna um identificador para o arquivo temporário, o arquivo é aberto no modo de atualização excluído automaticamente quando termina o programa

  • io.type (arquivo): detectar se um arquivo obj lida disponíveis

  • io.flush (): escrever o buffer todos os dados para o arquivo

  • io.lines (nome do arquivo opcional): Retorna uma função iterator, cada chamada terá uma linha no arquivo, quando o final do arquivo, ele irá retornar nulo, mas não fecha o arquivo


Modo completo

Normalmente, temos de lidar com vários arquivos ao mesmo tempo. Nós precisamos usar o arquivo: function_name vez métodos io.function_name. O exemplo que se segue demonstra o mesmo ficheiro, ao mesmo tempo que:

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

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

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

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

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

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

Implementação do código acima, você vai achar que a primeira linha de informações test.ua arquivo de saída e a última linha no arquivo adicionar Lua comentários. Estou aqui como saída é:

-- test.lua 文件

leia parâmetros consistentes com o modo simples.

Outros métodos:

  • file: seek (onde opcional, opcional offset): definir e recuperar a posição do arquivo corrente, sucesso, retorna a posição do arquivo final (em bytes), não nil mais uma mensagem de erro é retornada.Donde os valores dos parâmetros pode ser:

    • "Set": A partir do início do arquivo
    • "Cur": desde a posição actual [default]
    • "Fim": a partir de fim de arquivo
    • offset: O padrão é 0
    Sem arquivo de parâmetros: seek () retorna o local atual, file: seek ( "set") é voltado para o cabeçalho do arquivo, file: seek ( "end") para localizar o fim do arquivo e retorna o tamanho do arquivo
  • file: flush (): escrever o buffer todos os dados para o arquivo

  • io.lines (nome de arquivo opcional): abrir o modo de leitura de arquivo nome do arquivo especificado e retorna uma função iteradora, cada chamada vai apresentar uma linha, quando o final do arquivo, ele irá retornar nil, e feche o arquivo automaticamente.
    Se os parâmetros io.lines correia () <=> io.input (): lines (); o dispositivo de entrada padrão para ler o conteúdo, mas no final não fecha o arquivo, como

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

O exemplo a seguir usa procurar métodos para localizar a posição do arquivo penúltima 25 e usam o método de leitura * um parâmetro, ler todo o arquivo do local atual (penúltima posição 25).

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

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

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

Meu resultado é aqui saída:

st.lua 文件末尾--test