Я пытаюсь обновить некоторые части файла, не удаляя и не перезаписывая все остальное, однако режимы чтения / записи в Lua, похоже, поддерживают только добавление данных, удаление существующих данных и запись новых. Вот пример:
testfile.pak: "На улице холодно" -> "На улице тепло"
Теперь я имею дело с довольно большими файлами, а не с текстовыми файлами, поэтому чтение их в память и просто использование функций манипуляции со строками здесь не подходит. Кроме того, я уже обрабатываю файлы как часть программы, поэтому я не хочу добавлять к накладным расходам, перечитывая их до необходимой точки, вставляя данные и записывая остальные. Для этого потребуется вдвое больше места на жестком диске, а также вдвое больше времени. Я также не могу записать необходимые данные в первом цикле обработки. Поэтому мне интересно, можно ли просто сказать Lua записать с определенным смещением в файл, не создавая временный файл или дубликат, вроде того, как hex-редактор может изменять определенные части файлов без необходимости чтобы сохранить новую копию файла. Есть ли другие - может быть недокументированные - варианты записи для io.open, кроме "w", "w +", "a" и "a +"?