2014-11-08 36 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

相關問題