关于c#:另一个进程使用的文件

File used by another process

本问题已经有最佳答案,请猛点这里访问。

很多时候,当我们试图在Windows平台上写入文件时,都会出错,

"进程无法访问文件'xxx',因为另一进程正在使用它。"

如何在写入另一个进程未使用的文件之前签入C?


基本上,您不能-您必须尝试打开文件进行写入,如果您遇到异常,则无法写入:(

即使你可以先做一个单独的检查,结果在你开始写之前就已经过时了——你仍然可以在以后以这个异常结束。

如果框架提供了一个TryOpen方法,当然是……


这里唯一的选择是捕获生成的异常并适当地处理它。有关完整的讨论,请参阅其他两个SO线程:

  • 如何检查文件锁定?
  • 检测文件是否被另一个进程(或实际上是同一进程)锁定


在代码中使用文件后,必须将其发送到EDOCX1[1]

1
2
3
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


您只需使用您想要的共享访问权尝试打开,并处理抛出的错误。

注意:有时文件不会打开,因为您指定的文件共享权限与某人已打开文件的文件共享权限冲突。

更多信息请参阅我的答案。


尝试将open命令放入try catch语句中。如果正在使用该文件,将引发IOException。


如果可以重命名,请尝试重命名该文件,然后确认没有其他进程正在访问该文件。最后,确保在同一文件夹中重命名了同一个文件。