该进程无法访问该文件,因为它正被另一个进程使用

Posted

技术标签:

【中文标题】该进程无法访问该文件,因为它正被另一个进程使用【英文标题】:The process cannot access the file because it is being used by another process 【发布时间】:2010-12-10 03:35:22 【问题描述】:

我正在尝试读取 log4net 的日志文件:

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)

我得到了关于该主题的异常。我猜 log4Net 对文件持有排他锁,但是,例如 Notepad++ 可以读取文件,我想在技术上可以做到这一点。

有什么帮助吗?

【问题讨论】:

【参考方案1】:
using (FileStream fs = 
    new FileStream(filePath,
        FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
//...

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

您的日志可能被写锁定,因此请尝试使用 FileShare.ReadWrite。

【讨论】:

这对我不起作用。它仍然说该文件被另一个进程使用。知道为什么吗? 奇怪的是,这解决了我的问题,即使冲突的访问是 StreamReader。【参考方案2】:

尝试添加 FileShare 选项,看看是否有帮助:

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

编辑:更正的代码,不是FileShare.Read,而是FileShare.ReadWrite 可以解决问题(正如纪尧姆所展示的那样)。原因:你想打开你的文件并允许其他人同时读写。

【讨论】:

以上是关于该进程无法访问该文件,因为它正被另一个进程使用的主要内容,如果未能解决你的问题,请参考以下文章

该进程无法访问该文件,因为它正被另一个进程 Streamwriter 使用

IOException:该进程无法访问该文件,因为它正被另一个进程使用

该进程无法访问该文件,因为它正被另一个进程使用

该进程无法访问该文件,因为它正被另一个进程使用 ioexception

错误“该进程无法访问文件'fileDir',因为它正被另一个进程使用。”尝试读取或写入文本文件时[重复]

进程无法访问该文件,因为它正被另一个进程使用 [Android] [Gradle]