Добавлен , опубликован

Lua-программирование для чайников

Содержание:
Все эти функции начинаются с «io.» (сокр. от англ. «input-output» — ‘ввод-вывод’). Главное применение — изменение внутреннего содержания файла непосредственно из Lua-скрипта.
Вот четыре функции, которые понадобятся для этого:
io.open():
Открывает файл по указанному пути в указанном режиме. Режимов всего три:
«r» — режим чтения. Данный режим используется как режим по умолчанию. То есть, если не указать режим, файл откроется в данном режиме;
«w» — режим записи. Вся имеющаяся ранее информация стирается;
«a» — режим дозаписи в конец файла. Вся имеющаяся ранее информация сохраняется.
Путь в свою очередь пишется в кавычках; название файла обязательно должно иметь расширение. Если в указанной директории не существует такого файла, он будет создан.
file:write():
Записывает в указанный файл указанные значения. Ими должны быть только строки, числа и управляющие последовательности. file — переменная, открывающая файл (ниже всё станет понятно).
file:flush():
Сохраняет сделанные изменения в указанном файле.
io.close():
Закрывает указанный файл.
Пример:
Нужно дописать в конец файла script.lua, расположенного в папке data, несколько строк:
-- открываем наш файл в режиме дозаписи в конец файла  
local f = io.open("data/script.lua","a");  

-- создаём массив из строк, которые необходимо добавить в конец нашего файла  
local ns = {  
"string1",  
"string2",  
"string3",  
"string4",  
"string5",  
};  
-- сначала записываем первую строку, чтобы между ней и записями в файле была отступлена пустая строка  
f:write("\n".."\n"..ns[1].."\n");  
-- затем записываем остальные строки кроме последней (её, как и первую, нужно отформатировать отдельно)  
for i=2,(table.getn(ns))-1 do  
  f:write(ns[i].."\n");  
end  
-- ну и записываем последнюю строку  
f:write(ns[table.getn(ns)]);  

-- сохраняем сделанные изменения  
f:flush();  

-- закрываем наш файл  
io.close(f);
После открытия файла в конце будет следующее:
[прочие строки, уже имеющиеся в файле]  

string1  
string2  
string3  
string4  
string5

§15.1. Ещё несколько полезных функций.

io.lines():
Открывает указанный файл в режиме чтения, считывает из него все имеющиеся в нём в строке и возвращает каждую отдельно.
Пример:
local f = io.open("data/script.lua");

for line in io.lines(f) do
  print(tostring(line));
end
После конца цикла эта функция автоматически закрывает файл.
file:lines():
То же, что и io.lines, но не закрывает файл file после окончания цикла.
file:seek():
Получает и выставляет в файле позицию, заданную первым аргументом, им может быть:
"set" — начало файла;
"cur" — текущая позиция;
"end" — конец файла.
Вторым аргументом (число) можно приплюсовать к первому дополнительное количество строк, которое нужно отсчитать от выбранной позиции.
Пример:
f:seek("set",0); -- позиция выставлена в самое начало файла
f:seek("set",1); -- позиция выставлена во второй строке от начала файла вниз

`
ОЖИДАНИЕ РЕКЛАМЫ...