Я изучаю это. Не нашли ответа об этом. Возможно ли вставить/удалить данные в файл без их перезаписи? Я знаю, что есть File.AppendAllText(Path, "Content");
, но как насчет его удаления?Ввод данных в файл (удаление данных без перезаписи исходного содержимого)
Например.
У нас есть файл "Things.CB"
. Содержание этого файла:
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
Я хочу удалить 7 и 4.
Я открываю файл с моей программой, а затем продолжить читать это число в List<String>
.
Когда это произойдет, после выполнения RemoveAt()
в список, я получил сериализацию файла, а затем сохранил его с помощью BinaryWriter
или streamWriter
.
В этом процессе мы сделали 2 вещи, прочитали весь файл, десериализовали, а затем сериализуем его, чтобы мы могли записать его снова.
Я хочу знать, если это возможно только открыть файл, проверьте положение текста, то удаление/вставки и просто сохранить его без serializate или чтений в списке/массивы/и т.д. ...
Готовы ли вы перейти на очень низкий уровень и вмешаться в кластеры на жестком диске? Вы можете изменить FAT (NTFS .. безотносительно), чтобы вы по существу фрагментировали файл, перемещая часть, которую хотите удалить. После этого вы полностью изменили содержимое диска, кроме FAT (или любую другую таблицу таблиц размещения файлов в вашей конкретной ОС) – Grantly
С произвольным доступом к файлам вы могли * переписать * содержимое (например, с пустыми пространствами), но не * delete * (делая 20-байтный файл 16-байтными, после «удаления» 4 и 7).И, IIRC, случайный доступ будет просто загружать весь сектор или в память, делать изменения и записывать их обратно ... (нет, вы не можете частично писать в секторе). – SJuan76
Я не уверен, готов ли я, но я могу начать учиться, возможно ли это сделать с помощью C#? или мне нужно использовать низкоуровневый язык, например, C++? – Mydtys