他のプロセスで使ってるファイルを読む
WindowsUpdate.log を読み込んで日付時刻、終了コード引っこ抜けという課題があったので、.NET でやって食った。
そのときのコードがこんな感じ。
string windowsSystemDir = Environment.GetFolderPath(Environment.SpecialFolder.Windows); string filePath = windowsSystemDir + "\\WindowsUpdate.log"; using (StreamReader reader = new StreamReader(filePath)) { // something code. }
そして、結果が。
別のプロセスで使用されているため、プロセスはファイル 'C:\Windows\WindowsUpdate.log' にアクセスできません。
とIOException発生っと。読み取り専用のストリームなんだからいいだろーとか思うんだけど、StreamReader はその辺ダメみたい。
代わりに、FileStream を経由すると、読み取りは問題なくいけた。
using (FileStream fileStream = new FileStream( filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader reader = new StreamReader(fileStream)) { detectLines(reader); } }
しっかしこれもどうなのやら、、、、。