C#讀取被程式佔用的檔案

iDotNetSpace發表於2009-02-04

檔案“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一程式使用,因此該程式無法訪問該檔案。

logfilecargoabc.txt是一個日誌檔案,不定時都可能由另外的程式對它進行日誌記錄寫入操作。

今需要對日誌檔案讀取出來,顯示在日誌查詢裡,需要用到了IO流。

1、 FileStream fs = File.OpenRead(url);
StreamReader sr = new StreamReader((System.IO.Stream)fs, System.Text.Encoding.Default);

錯誤提示:檔案“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一程式使用,因此該程式無法訪問該檔案。

2、StreamReader sr = File.OpenText(url);

錯誤提示:錯誤提示:檔案“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一程式使用,因此該程式無法訪問該檔案。

3、 FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

正確讀取。

總結:

這樣的情況,不單要與只讀方式開啟txt檔案,而且,需要共享鎖。還必須要選擇flieShare方式為ReadWrite。因為隨時有其他程式對其進行寫操作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-545253/,如需轉載,請註明出處,否則將追究法律責任。

相關文章