Вы не можете физически «переписать на месте» любой текстовый файл (включая файл XML), за исключением редкого случая, когда вы можете гарантировать, что вы перезаписываете ровно столько байтов, сколько было. Что вам всегда нужно сделать, это написать новый файл (который содержит части старого и новые части), а затем переименовать старый файл (например, добавить к нему расширение .bak
, после удаления любого старого .bak
который мог остаться без дела), переименуйте новый файл в старое имя и только в этот момент удалите старый файл. Такой подход гарантирует, что сбой компьютера или диска в середине вашей работы не будет катастрофой - старые или новые данные будут рядом (в худшем случае вам понадобится переименовать, если сбой происходит только между двумя переименовывает).
Чтобы записать новый файл с модами и партиями из старого, в xmlfile
, используйте документированные функции чтения здесь и документированные функции записи здесь . Для небольшого файла вы можете сначала построить дерево объектов в памяти через считыватель, а затем записать все это через записывающее устройство; но это может занять много памяти. Альтернативой является метод инкрементного синтаксического анализа, такой как тот, который документы MSDN называют «моделью программирования по запросу».