2

我试图通过它的 UNC 路径从 Windows 共享文件夹中读取文件正文,并得到这个异常:The process cannot access the file '\\<someIP>\logs\LogFiles\W3SVC1\u_ex141017.log' because it is being used by another process.
但是,这个文件并没有真正被任何进程锁定。我可以使用文本编辑器等从我的 PC 上查看它。

我正在使用此代码来读取文件:

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 回答