У
Удалённый пользователь 341712
Гость
Автор темы
Доброго времени суток, не все знают как работать с файловыми функциями, для этого я создаю данную тему.
И так, функций много, а разбирать будем по порядку.
Существует функция io.open(), она открывает файл в режиме, указанном в дополнительном аргументе. Возвращает хендлер файла, или,
в случае ошибок, nil и сообщение об ошибке.
Установим цель: создать файл с текстом.
Для начала давайте разберем, какие бывают режимы открытия файлов:
"r" – режим чтения файла;
"w" – режим записи в файл с удалением содержимого файла (перезапись);
"a" – режим записи в файл с добавлением к содержимому файла;
Но этого недостаточно для полноценной работы скрипта, разберем еще 2 функции.
Первая функция io.write(), она записывает значение каждого из аргументов в файл. Аргументами могут быть строки или числа.
Для записи других значений, необходимо использовать функции tostring или string.format перед вызовом функции write.
Вторая функция io.close(), она заканчивает редактирование/изменение файла, закрывает стандартный поток вывода.
Теперь попробуем создать файл, в котором мы напишем Hello World!
Как мы видим, я задал переменной путь к файлу, дальше с данной переменной работал.
После завершения работа с file:write необходимо обязательно закрыть -- file:close()
Ну допустим, я хочу написать что-то в .txt и вывести в диалог, легче легкого.
Но для начала нужно выучить еще одну функцию - io.lines(), она открывает файл с данным именем в режиме чтения и возвращает функцию-итератор
которая при каждом последующем вызове возвращает новую строчку из файла. Т.о., конструкция, кому не ясен данный язык, в крации - читает файл и при помощи этого можно выводить в чат то, что хранится в .txt. Так же она не требует режимы открытия файлов. Чтобы не было мусора, необходимо будет использовать табуляцию, пример ниже:
Вот так легко вывести весь текст из файла в диалог, при помощи цикла for.
Так же существует функция для открытия определенного файла, называется она - io.popen(), она запускает программу в отдельном процессе и возвращает хендлер файла, который вы можете использовать для чтения данных из этой программы (если mode равен "r", значение по умолчанию), или для записи данных в эту программу (если mode равен "w").
Давайте создадим файл, а потом команду, и при помощи файловой функции открыем .txt файл в папке config:
Плюсуем еще функцию, она называется - io.flush(), она сохраняет все данные, записанные в файл, думаю тут даже пример не нужен.
На этом всё, доброго дня
И так, функций много, а разбирать будем по порядку.
Существует функция 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(), она сохраняет все данные, записанные в файл, думаю тут даже пример не нужен.
На этом всё, доброго дня