В файле, каждый бит информации имеет место. Удаление некоторых из этих битов не перемещает положение других элементов.
File
1111111111111111
222222222.....22
3333.33333.3.333
44.444.444.444.4
5555555555555555
становится
1111111111111111
222222222.....22
44.444.444.444.4
5555555555555555
путем удаления
3333.33333.3.333
и перемещение
44.444.444.444.4
5555555555555555
в месте предыдущего, проведенного
3333.33333.3.333
44.444.444.444.4
Таким образом, вы можете сделать это без временного файла, купить, используя следующую методику
- открывает произвольный доступ к файлам (мы будем прыгать в нем.
- Прочитайте файл до тех пор, пока вы не обнаружите элементы, которые нужно удалить, сохраняя «местоположение» начала этой области.
- Рассчитать «размер» удаленной области.
- Хотя есть область за удаленной областью, которая не была перемещена
- Скопируйте эту область по удаленной области.
- Переназначить удаленную область в область, из которой вы только что скопировали.
- Запишите конец файла.
Конечно, это действительно, действительно опасно; так как любое прерывание в процедуре оставляет вам файл, который не является оригиналом или результатом. Поскольку копии файлов могут быть легко прерваны перебоями в подаче электроэнергии, убитыми программами и т. Д., Вы действительно не хотите этого подхода, так как так сложно восстановить из-за сбоя.
Вот почему напишите второй файл, дождитесь, пока это будет сделано, а затем переместите его поверх исходного файла, это гораздо лучшее решение.
Возможный дубликат [Найти строку в файле и удалить ее] (http://stackoverflow.com/questions/1377279/find-a-line-in-a-file-and-remove-it) – karvoynistas
@ karvoynistas, я посмотрел на него, но это не дубликат. Ответы даны, создавая новый текстовый файл, затем используя тот, который, если возможно, я не хочу делать. – Jonah
Альтернативой перезаписи файла для каждой операции является загрузка файла в структуру данных и сохранение его в течение всего жизненного цикла программы. Затем экспортируйте данные в файл по завершении. Сохраняет процесс операций ввода-вывода файла каждый раз, когда вы делаете какие-либо изменения. – Grice