Latest web development tutorials

Lua файл ввода / вывода

Lua ввода / вывода библиотеки для чтения и обработки файлов. Разделенные на простые узоры (например, C), полный режим.

  • Простой режим (простая модель) имеет текущий входной файл и текущий выходной файл, а также обеспечить для этих файловых операций, связанных с.
  • Полный режим (полная модель), используя внешнюю дескриптор файла для достижения. Именно в лицо в форме объекта, все файловые операции будут определены как метод дескрипторов файлов

В простом режиме, чтобы сделать несколько простых операций с файлами, когда более целесообразно. Но после того, как какой-то продвинутой файловой операции, простая модель оказалась неадекватной. Например, читая эту операцию несколько файлов, используйте полный режим больше подходит.

Оператор Операция открытия файла выглядит следующим образом:

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

Режим Значение являются:

режим описание
R Открыт только для чтения файл, файл должен существовать.
вес Открыть только для записи файла, если файл существует, длина файла сбрасывается в 0, то есть, содержимое файла исчезнет. Если файл не существует, создайте файл.
В дополнительном только для записи файла открывается. Если файл не существует, создание файла, если файл существует, данные записи будут добавлены в конец файла, будет сохранено содержимое исходного файла. (EOF символ зарезервировано)
г + Оба чтения и записи, чтобы открыть файл, файл должен существовать.
ш + Открыть для чтения и записи файлов, если файл существует, длина файла нуля ясно, что содержимое файла исчезнет. Если файл не существует, создайте файл.
а + И похоже, но этот файл для чтения и записи
б В двоичном режиме, если файл является двоичным файлом, вы можете добавить б
+ Знак указывает на файл может читать и писать

Простой режим

Простой режим с использованием стандартного ввода / вывода или использовать текущий входной файл и текущий выходной файл.

Ниже приведен код файла file.lua, файл операции test.lua (если вам не нужно, чтобы создать файл), следующим образом:

-- 以只读方式打开文件
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.ua выходного файла и последняя строка в файле добавить Lua комментарии. Я здесь, как выход:

-- test.lua 文件

В приведенном выше примере мы использовали Io "х", в котором io.read (), у нас нет параметров, параметр может быть одним из следующей таблицы:

режим описание
"* N" Ряд читается и вернул его. Пример: file.read ( "* п")
"* А" Прочитайте весь файл из текущего местоположения. Пример: file.read ( "* а")
"* L" (по умолчанию) Читает следующую строку в конец файла (EOF) в возвращает NIL. Пример: file.read ( "* л")
номер Возвращает указанное число символов в строке, или когда EOF возвращает ноль. Пример: file.read (5)

Другие И.О. методы:

  • io.tmpfile (): возвращает дескриптор временного файла, файл открывается в режиме обновления автоматически удаляются , когда концы программы

  • io.type (файл): обнаружение ли обрабатывает имеющиеся в его распоряжении OBJ файл

  • io.flush (): буфер записи все данные в файл

  • io.lines (необязательное имя файла): Возвращает функцию итератора, каждый вызов получит строку в файле, когда конец файла, то он вернет ноль, но не закрывает файл


Полный режим

Обычно мы должны иметь дело с несколькими файлами одновременно. Нам нужно использовать файл: имя_функции вместо io.function_name методы. Следующий пример демонстрирует тот же файл в то же время, как:

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

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

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

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

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

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

Реализация указанного выше кода, вы обнаружите, что первая строка информации test.ua выходного файла и последняя строка в файле добавить Lua комментарии. Я здесь, как выход:

-- test.lua 文件

считывания параметров в соответствии с простым режимом.

Другие методы:

  • Файл: искать ( по желанию,откуда,пожеланиюсмещение): установить и получить текущую позицию в файле, успех, возвращает конечную позицию файла (в байтах), терпит неудачу ноль плюс сообщение об ошибке. Значения параметров Откуда могут быть:

    • "Установить": С начала файла
    • "Тек": Из текущей позиции [по умолчанию]
    • "End": начиная с конца файла
    • Смещение: Значение по умолчанию равно 0
    Без параметров файла: искать () возвращает текущее местоположение, файл: искать ( "установить") предназначен для заголовка файла, файл: искать ( "конец"), чтобы найти конец файла и возвращает размер файла
  • Файл: на одном уровне ():буфер записи все данные в файл

  • io.lines (необязательное имя файла): открыть режим чтения указанного файла имя файла и возвращает функцию итератора, каждый вызов будет подавать линию, когда конец файла, то он вернет ноль, и автоматически закрыть файл.
    Если параметры ремня io.lines () <=> io.input (): линии (); устройство ввода по умолчанию для чтения содержимого, но конец не закрывает файл, например,

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

В следующем примере используется искать методы для определения положения файла предпоследнее 25 и использовать метод чтения * параметр, читать весь файл из текущего местоположения (предпоследняя позиция 25).

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

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

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

Мой результат выводится здесь:

st.lua 文件末尾--test