【发布时间】:2010-10-12 04:21:44
【问题描述】:
很多时候我们在尝试在 Windows 平台上写入文件时遇到错误,
“该进程无法访问文件‘XXX’,因为它正被另一个进程使用。”
在写入文件之前如何检查 C#,它没有被另一个进程使用?
【问题讨论】:
很多时候我们在尝试在 Windows 平台上写入文件时遇到错误,
“该进程无法访问文件‘XXX’,因为它正被另一个进程使用。”
在写入文件之前如何检查 C#,它没有被另一个进程使用?
【问题讨论】:
你不能,基本上 - 你必须尝试打开文件进行写入,如果你得到一个异常你不能写入它:(
即使您可以先进行单独检查,在您开始编写之前,结果也会过时 - 您稍后仍可能会遇到异常。
如果框架提供TryOpen 方法就好了,诚然...
【讨论】:
这里唯一的选择是捕获生成的异常并适当地处理它。有关完整讨论,请参阅另外两个 SO 主题:
【讨论】:
在您的代码上使用文件后,您必须close您的文件:
FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened
//you use the file here
file.Close(); //then you must to close the file
【讨论】:
using(...){...} 的标题上,一切顺利
您只需尝试使用您想要的共享访问权限打开,并处理引发的错误。
注意:有时文件无法打开只是因为您指定的文件共享权限与某人已经打开文件的文件共享权限冲突。
【讨论】:
尝试将 open 命令放在 try-catch 语句中。如果文件正在被使用,将抛出 IOException。
【讨论】:
如果可以重命名,请尝试重命名文件,然后确认没有其他进程正在访问该文件。最后确保你在同一个文件夹中重命名了同一个文件。
【讨论】: