Гайд Как работать с файловыми функциями

  • Автор темы Удалённый пользователь 341712
  • Дата начала
У

Удалённый пользователь 341712

Гость
Автор темы
Доброго времени суток, не все знают как работать с файловыми функциями, для этого я создаю данную тему.

И так, функций много, а разбирать будем по порядку.

Существует функция io.open(), она открывает файл в режиме, указанном в дополнительном аргументе. Возвращает хендлер файла, или,
в случае ошибок, nil и сообщение об ошибке.

Установим цель: создать файл с текстом.

Для начала давайте разберем, какие бывают режимы открытия файлов:
"r" – режим чтения файла;
"w" – режим записи в файл с удалением содержимого файла (перезапись);
"a" – режим записи в файл с добавлением к содержимому файла;

Но этого недостаточно для полноценной работы скрипта, разберем еще 2 функции.

Первая функция io.write(), она записывает значение каждого из аргументов в файл. Аргументами могут быть строки или числа.
Для записи других значений, необходимо использовать функции tostring или string.format перед вызовом функции write.

Вторая функция io.close(), она заканчивает редактирование/изменение файла, закрывает стандартный поток вывода.

Теперь попробуем создать файл, в котором мы напишем Hello World!

Lua:
file = io.open(getGameDirectory().."//moonloader//config//Lessens.txt", "a")
file:write("Hello World!\n--[[Табуляция]]")
file:close()

Как мы видим, я задал переменной путь к файлу, дальше с данной переменной работал.
После завершения работа с file:write необходимо обязательно закрыть -- file:close()

Ну допустим, я хочу написать что-то в .txt и вывести в диалог, легче легкого.

Но для начала нужно выучить еще одну функцию - io.lines(), она открывает файл с данным именем в режиме чтения и возвращает функцию-итератор
которая при каждом последующем вызове возвращает новую строчку из файла. Т.о., конструкция, кому не ясен данный язык, в крации - читает файл и при помощи этого можно выводить в чат то, что хранится в .txt. Так же она не требует режимы открытия файлов. Чтобы не было мусора, необходимо будет использовать табуляцию, пример ниже:

Lua:
for line in io.lines(getGameDirectory()..'//moonloader//config//Lessons.txt') do
       sampShowDialog(3813, "Урок по Lua скриптингу", line..'\n', "Закрыть", nil, 0)
end

Вот так легко вывести весь текст из файла в диалог, при помощи цикла for.

Так же существует функция для открытия определенного файла, называется она - io.popen(), она запускает программу в отдельном процессе и возвращает хендлер файла, который вы можете использовать для чтения данных из этой программы (если mode равен "r", значение по умолчанию), или для записи данных в эту программу (если mode равен "w").

Давайте создадим файл, а потом команду, и при помощи файловой функции открыем .txt файл в папке config:

Lua:
file = io.open(getGameDirectory()..'//mooloader//config//Lessons.txt', "a")
file:write("Привет мир!\nЭто вторая строка\nА это третья")
file:close()

sampRegisterChatCommand('boom', function()
    io.popen(getGameDirectory()..'//moonloader//config//Lessons.txt')
end)

Плюсуем еще функцию, она называется - io.flush(), она сохраняет все данные, записанные в файл, думаю тут даже пример не нужен.

На этом всё, доброго дня
 

4el0ve4ik

Известный
Всефорумный модератор
1,548
1,338
Не понимаю, зачем ты делаешь гайды, которые намного лучше расписаны на сторонних сайтах? Заняться нечем? Займись самообразованием.