Перейти к публикации
Форум - ComputerCraft
  • 0
Stinger

Функция перезаписи файла!

Вопрос

Здравствуйте друзья, проблема в следующем lua обращается к файлу и нужно что бы в следующий раз он получил значение из файла - добавил к нему новое и перезаписал, но lua просто дописывает значение в файл, просьба помочь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

А, понятно.

Ну в таком случае тебе просто надо перезаписывать файл. Открывай его с режимом r, обрабатывай данные, закрывай и переоткрывай в режиме w. Файл перезапишется начистую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

В обычном Луа можно было бы использовать режим a+ - "чтение плюс дозапись".

 

Например так:

-- открываем файлик в режиме чтения-добавления
-- если файлика не существовало в момент открытия - он будет создан
-- если он существовал - будет открыт на дозапись
local file = io.open("hotto-dogu.txt", "a+")

file:write("i like hotto dogu\neat eat eat hotto dogu\n")

-- закрываем файлик
-- (это правило хорошего тона, как минимум)
file:close()

Запускаем два раза, и в файле hotto-dogu.txt появляется четыре строки:

i like hotto dogu
eat eat eat hotto dogu
i like hotto dogu
eat eat eat hotto dogu

Однако в OpenComputers всё чуть сложнее, потому что режимы с плюсиками не работают. OpenComputers поддерживает только режимы r, w и a.

То есть нам придётся сначала открыть файл на чтение, прочесть что надо, закрыть, а потом уже открывать на дозапись.

Например так:

local comboCounter = 0

-- открываем на чтение и вершим свои тёмные дела
local file = io.open("hotto-dogu.txt", "r")

if file ~= null then
  for line in file:lines() do comboCounter = comboCounter + 1 end
  file:close()
end

-- а теперь открываем на дозапись, и дозаписываем какую-нибуь хренотень
file = io.open("hotto-dogu.txt", "a")

if comboCounter == 0 then
	file:write("hotto dogu\n")
else
  file:write("hotto dogu [x" .. comboCounter + 1 .. "]\n")
end

file:close()

Запустим программу раз пять, и вуаля!

hotto dogu
hotto dogu [x2]
hotto dogu [x3]
hotto dogu [x4]
hotto dogu [x5]
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Спасибо за ответ, не совсем то , что надо, нужно следующее :

 

Изначально в файле значение 5! -- только 5 ничего более

Программа открывает файл - получает его значение в данном случае 5,

Потом плюсует к этому значению допустим 4 и перезаписывает файл.

И при следующем открытии должно выдать уже не 5 а 9!

 

Не построчно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×