【问题标题】:FileStream ReadWrite in C#C# 中的 FileStream 读写
【发布时间】:2013-08-09 00:14:00
【问题描述】:

我打开了一个 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 对象的引用,该对象保持打开状态以防止其他应用程序/用户对其进行更改。

我不明白的是 write 方法将如何工作。先前数据和新数据的大小可能不同。所以下面的代码没有意义。

stream.Position = 0;
document.Save(stream);
stream.Close();

如何在不关闭流并重新打开它的情况下覆盖内容?这似乎不合逻辑,如果是,我如何确保在关闭和重新打开流之间的短时间内文件不会被其他东西锁定?

【问题讨论】:

    标签: c# .net filestream read-write


    【解决方案1】:

    如果新文档比旧文档长,文件(和流)将自动展开。

    如果没有,您可以通过调用 stream.SetLength() 截断文件。
    您可能希望将其设置为 stream.Position,这表示到目前为止已写入的字节数。

    【讨论】:

    • 啊,谢谢。不知道stream.Length 有二传手。将尝试并恢复。
    • stream.Length 属性实际上是只读的。找到了stream.SetLength(long) 方法。
    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多