Похоже, что поток файлов, который является внутренним для устройства записи, не записывается на диск. Это произойдет автоматически, когда внутренний поток достигнет определенного размера, но я не думаю, что есть какие-либо гарантии относительно того, когда это произойдет или сколько данных будет записано на диск. Я рекомендую вызывать Close()
или Dispose()
на устройстве записи, когда вы закончите его использовать и хотите убедиться, что его содержимое записано на диск.
Также обратите внимание на следующие предложения.
Создайте писатель с помощью XmlWriter.Create
и поместите его в блок использования.
using (XmlWriter writer = XmlWriter.Create(filename))
{ /* code that uses writer */ }
Это позволяет немного больше гибкости при создании средства записи текста, так как вы можете передать XmlReaderSettings
, если это будет необходимо. Кроме того, блок using заботится о вызове close / dispose, когда вы закончите с использованием устройства записи.
Если у вас проблемы с содержимым перезаписываемого файла, используйте перегрузку конструкции, которая принимает Stream
.
using (XmlWriter writer = XmlWriter.Create(File.Open(filename, FileMode.Open))
{ /* code that uses writer */ }
Это дает вам немного больше контроля над тем, как будут обрабатываться конфликты в именах файлов.