该进程无法访问该文件,因为它正被另一个进程使用
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