2

UNC パスを使用して Windows 共有フォルダーからファイル本体を読み込もうとしていますが、この例外が発生します。The process cannot access the file '\\<someIP>\logs\LogFiles\W3SVC1\u_ex141017.log' because it is being used by another process.
ただし、このファイルは実際にはどのプロセスによってもロックされていません。パソコンからテキストエディタ等で閲覧できます。

このコードを使用してファイルを読み取ります。

var logFile = File.ReadAllText(logPath);

var logFile = (string)null;
using (var fileStream = new FileStream(logPath, FileMode.Open, FileAccess.Read, FileShare.Delete))
{
    using (var reader = new StreamReader(fileStream))
    {
        logFile = reader.ReadToEnd();
    }
}

(どちらも失敗)

ファイルが実際にどのプロセスによってもロックされていない場合に、この例外が発生する理由はありますか?

4

1 に答える 1

6

FileShare.Delete を FileShare.ReadWrite に変更してみてください。これにより、ファイルを他のアプリケーションで同時に読み書きできるようになります。言い換えると

var logFile = (string)null;
using (var fileStream = new FileStream(logPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (var reader = new StreamReader(fileStream))
    {
        logFile = reader.ReadToEnd();
    }
}
于 2014-10-17T09:19:59.673 に答える