1

一部のシステム サービスで使用されるログ ファイルがあります。プログラムにそのファイルを読み取らせたい。

System.IO.File.ReadAllText()私が使用するSystem.IO.IOExceptionと、The process cannot access the file 'X' because it is being used by another process.メッセージが表示されます。それでも、呼び出した場合System.IO.File.Copy()、そのファイルを一時ファイルにコピーして、一時ファイルを読み取ることができます。

これはなんとなく変です。ファイルをコピーできるのに、それを開いて読み取ることができないのはなぜですか?

最初にコピーせずに、そのファイルをその場で読み取ることは可能ですか?

4

2 に答える 2

2

ログ ファイルがどのように作成されたか、特に FileShare パラメータによって異なります。読み取り、書き込み、またはなしを許可するように設定できます。

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read); 

http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx

于 2012-09-25T13:44:49.413 に答える
0

表示されたメッセージは、このログ ファイルが「共有読み取り」フラグなしで作成/開かれたことを意味します。実際、すでに開かれているファイルを開くことは、このファイルの作成者または最初の「開いた人」が明示的に許可した場合にのみ許可されます。

それを読み取るには、既に行ったようにコピーするか、ドライブの VSS スナップショットを作成します。

于 2012-09-25T13:45:59.700 に答える