C#. Как удалить строку из .txt файла без создания temp файлов и без полной перезаписи имеющегося файла? Возможно ли это?

Например, у меня есть файл с огромным количеством строк общим весом в 32 гигабайта. Этот файл содержит сериализованные Json объекты. Мне нужно найти строку содержащую определённый объект и перезаписать её так, чтобы не пришлось переписывать все 32 гигабайта сначала в условный temp а потом в тот же файл.

Если использовать StreamWriter для этих целей, то я фактически записываю информацию поверх старой. Это может вызвать ошибки если новый текст меньше старого. Мне нужно строку стереть(или, например, превратить в 1 символ) и написать там что-то так, чтобы получившийся меньший текст не продолжался обрубком старого. Шерстил интернеты, но ничего подобного не нашёл. Это возможно? И если да, то как это сделать?


Ответы (1 шт):

Автор решения: Frehzy

Без полной перезаписи не обойтись. Как вариант, выгрузи всё это счастье в бд и с помощью sql update изменяй. Алгоритм следующий: серилизуешь данные из текстового файла в list<class>, вставляешь с помощью insert каждый элемент листа в таблицу твоей бд. Если будут нужны подробности, тегни меня с помощью @

→ Ссылка