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