2014-11-08 80 views
-2

我已经看过几种解决方案来阅读已被另一个进程使用的文件,但它们都不适用于我。打开另一个进程正在使用的文件

我想要读取的文件是一个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

看看MSDN文档[MSDN File.Open方法](http://msdn.microsoft.com/en-us/library/y973b725(v = vs.110).aspx) – MethodMan 2014-11-08 16:00:42

+0

您是否尝试过使用('File.ReadAllLines()'](http://msdn.microsoft.com/en-us/library/s2tte0y1(v = vs.110).aspx)或['File.ReadLines()'](http: //msdn.microsoft.com/en-us/library/dd383503(v=vs.110).aspx)?它们都提供了以只读访问方式打开文件的替代方法。 – 2014-11-08 16:01:18

+0

您是否正在使用“使用中的文件”异常或其他错误消息? – keyboardP 2014-11-08 16:02:18

回答

1

从您的意见,原来的进程已经打开的文件与FileShare.None。从MSDN

拒绝共享当前文件。在文件关闭之前,任何打开文件的请求(通过 该进程或其他进程)都将失败。

原工艺上有一个排他锁,所以你将不能够除非FileShare枚举从None改变,或者文件被关闭,以从中读取。

+0

是的,这是不幸的!不幸的是,我无法改变独家使用:( – DavidC799 2014-11-09 00:40:55