Скажем, у меня очень большой файл (скажем,> 1 ГБ), и я хочу добавить один символ в середине.Возможно ли сделать это без чтения и записи всего файла?Мое текущее решение заключается в следующем (в псевдокоде):
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
Хотя это работает, это приводит к 1 ГБ чтения и 1 ГБ записи для изменения одного символа.Также требуется 1 ГБ свободного места на диске.Я бы предпочел изменить часть файла, которую нужно изменить на месте, поэтому мне нужно только прочитать и записать одну часть файла (т.е. 4 КБ чтения и 4 КБ записи).Возможно ли это (или решение лучше моего)?
Я думал, что решение для этого могло бы быть возможным путем фрагментации файла ОС и создания нового фрагмента для измененного раздела, но я не знаюесли эта возможность была написана и предоставлена разработчикам.