У меня есть FileStream открыт следующим образом:FileStream ReadWrite в C#
FileInfo file = new FileInfo(@"C:\Project.xml");
FileStream stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
XmlDocument document = new XmlDocument();
document.Load(stream);
поток открыт, когда файл проекта загружен. Теперь, когда изменения сохраняются, мне нужно перезаписать его содержимое. На этом этапе у меня есть ссылка на объект FileStream, который остается открытым, чтобы другие приложения/пользователи не вносили в него изменений.
Я не понимаю, как будет работать метод записи. Размер предыдущих и новых данных может отличаться. Таким образом, следующий код не имеет смысла.
stream.Position = 0;
document.Save(stream);
stream.Close();
Как можно переписать содержимое без закрытия потока и его повторного открытия? Это кажется нелогичным, и если да, то как я могу гарантировать, что файл не будет заблокирован чем-то другим в течение короткого промежутка времени между закрытием и повторным открытием потока?
Ах, спасибо. Не знал, что 'stream.Length' имеет сеттер. Попробуй и вернись. –
Свойство 'stream.Length' фактически доступно только для чтения. Вместо этого найден метод 'stream.SetLength (long)'. –