我已经看过几个解决方案来读取已经被另一个进程使用的文件,但它们似乎都不适用于我。
我正在尝试阅读的文件是一个XML文件,其中包含我需要提取的配置设置。
以下是我的尝试:
using (var stream = File.Open("\\\\2008r2\\c$\\ProgramData\\location\\siteConfig.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var reader = new StreamReader(stream))
{
// Actions you perform on the reader.
while (!reader.EndOfStream)
{
Console.WriteLine(reader.ReadLine());
}
}
这似乎适用于其他所有人,我不知道我做错了什么!我的文件是否以不同的方式锁定,即使阅读也无法访问?
非常感谢!
戴夫
答案 0 :(得分:1)
根据您的评论,原始流程已使用FileShare.None
打开文件。来自MSDN:
拒绝分享当前文件。任何打开文件的请求(通过 在文件关闭之前,此过程或其他过程将失败。
原始进程对其进行了独占锁定,因此除非从FileShare
更改None
枚举或文件已关闭,否则您将无法从中读取。