說我有一個非常大的文件(比如說> 1GB)的中間刪除內容的快捷方式,我想在它的中間增加一個字符。是否可以在不讀寫整個文件的情況下執行此操作?我目前的解決方案是這樣的(在僞代碼):是否有添加或非常大的文件
x = 0
chunk = read 4KB chunk x of input file
if chunkToEdit = x, chunk = addCharacter(chunk)
append chunk to the output file
x = x + 1
repeat last 4 steps until input file is fully read
delete input file
move output file to input file
雖然這樣的作品,它導致的1GB讀,寫,使單個字符的變化1GB。它還需要1GB的備用磁盤空間。我寧願做的是修改文件中需要修改的部分,所以我只需要讀寫文件的一部分(即4KB的讀取和4KB的寫入)。這是可能的(或解決方案比我的更好)?
我想了一個解決方案可以由OS分段文件,並正在爲改變部分新片段是可能的,但我不知道,如果這種能力已被寫入並暴露給開發者。