У меня открыт FileStream следующим образом:
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();
Как можно перезаписать содержимое, не закрывая поток и не открывая его повторно? Это кажется нелогичным, и если это так, как я могу гарантировать, что файл не будет заблокирован чем-то еще в течение короткого времени между закрытием и повторным открытием потока?