2
我嘗試更新文件的某些部分,而不刪除或覆蓋其他任何內容,但Lua的讀/寫模式似乎只支持追加數據或刪除現有數據並編寫新的數據。這裏有一個例子:Lua:更新文件十六進制編輯器樣式的部分
testfile.pak:「這是外面冷」 - >「這是溫暖外」
現在,我處理相當大的文件,而不是文本的文件,所以閱讀他們進入內存和只使用字符串操作函數在這裏沒有選擇。另外,我已經將這些文件作爲程序的一部分處理,所以我不想通過重新讀取它們到必要的位置來增加開銷,插入數據並寫下其餘部分。這需要兩倍的硬盤空間和兩倍的時間。我也不能在第一個處理週期中寫入必要的數據。所以我想知道是否有可能告訴Lua寫入文件中的某個偏移量而不必創建臨時文件或重複文件,有點像十六進制編輯器能夠更改文件的特定部分,而無需創建保存文件的全新副本。是否有其他 - 可能沒有記錄 - 爲io.open寫入除「w」,「w +」,「a」和「a +」之外的選項?
非常感謝。這很好用!我不知道我仍然可以用「r +」模式打開文件來寫入文件。另外,使用seek命令指定寫入位置非常聰明。我有點認爲它只用於閱讀功能。 – Zerobinary99 2012-02-05 16:18:59
是的,令人困惑的「r +」被稱爲「更新」模式(它允許你閱讀那裏的內容,但也可以在任何地方寫)。爲什麼他們不使用「你」或別的東西,我不知道。 – 2012-02-05 17:00:33