2013-08-05 32 views
6

造成IOException異常我讀這是定期由第三方程序寫入到文件中。讀取文件而無需對第三方程序

using (FileStream fs = new FileStream(
         FullPath, 
         FileMode.Open, 
         FileAccess.Read, 
         FileShare.ReadWrite)) 

然而,第三方程序被寫入文件,但所以偶爾使用FileShare.None

我已經拿到了文件進行讀取操作時,第三方程序:使用下面的FileStream 即時閱讀嘗試以獨佔訪問方式打開文件但失敗。

如何我可以讀不會導致問題的第三方程序這個文件? 我不介意釋放我的閱讀以優先考慮另一個應用程序。任何方式來做到這一點?

+0

你試過把它複製到一個臨時位置,並從那裏讀?通常,我所做的是創建一個函數,該函數嘗試讀取文件,如果它在使用中返回false,但如果不返回true,則嘗試複製文件並將其移動到我可以使用的位置。使用生產文件可能會有潛在的危險,特別是在組合中有2個進程。 – Bearcat9425

+0

File.Copy只是在後臺執行FileStream。問題不在我嘗試閱讀並鎖定時。當我有權訪問該文件並且第三方程序嘗試獲取獨佔訪問權限時,由於我已打開它,因此無法訪問。 – CathalMF

+0

如果您將文件複製到臨時位置並讓您的程序使用該臨時文件,從而使原始文件未被使用並因此仍然可以通過第三方程序訪問而沒有任何問題,該怎麼辦。如果這是有道理的:D – aladd04

回答

1

如果第三方proccess文件(.exe,窗口服務,Web應用程序等)一旦停止,你可以訪問該文件,這時,如果它從不停止或者是不可能的告訴它什麼時候會運行,只要打開服務器就可以複製這個文件。

你需要多長時間來讀取這個文件這將是有效與否取決於你的應用程序的性質和另外一個,而上。

+0

不,它永遠不會停止。 – CathalMF

+0

也許這項服務有一些公開的方法,您可以從中獲得文件中的相同信息。 –

1

雖然我沒有用它,你嘗試過使用System.IO.Filestream.Unlock方法來幫助你流目前沒有被其他軟件鎖定文件的部分?我只是假設其他軟件沒有鎖定整個文件。

相關問題