Перейти к содержимому
  • 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]

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


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

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

 

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

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

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

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

 

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...