【问题标题】:How to correctly open a FileStream for usage with an XDocument如何正确打开 FileStream 以与 XDocument 一起使用
【发布时间】:2010-09-21 14:58:21
【问题描述】:

我想使用 Linq2XML 将一些节点附加到 xml 文档。有问题的文件正在被其他进程使用,他们应该能够在我更新文件时读取文件。所以我想出了这个解决方案,这显然不是正确的方法(方法 doc.Save() 失败并说另一个进程正在使用该文件):

using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
  doc = XDocument.Load(new StreamReader(fs));
  doc.Root.Add(entry);
  doc.Save(filename);
  fs.Close();
}

非常感谢任何帮助。

【问题讨论】:

    标签: c# .net filestream linq-to-xml access-control


    【解决方案1】:

    加载文档,关闭流,再次保存。这也意味着您可以以更简单的方式打开它:)

    XDocument doc;
    
    using (StreamReader reader = File.OpenText(filename))
    {
      doc = XDocument.Load(reader);
      doc.Root.Add(entry);
    }
    
    doc.Save(filename);
    

    【讨论】:

    • 感谢您的回答,乔恩。如果我使用这个版本,是否可以确保其他进程可以打开同一个文件进行读取访问?
    • 嗯,当您调用 Save 时,他们无法读取它...这是个问题吗?我不记得 File.OpenText 在共享方面做了什么,但如果需要,您可以轻松检查并使用 StreamReader 构造函数做正确的事情。
    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多