在尝试在Windows平台上编写文件时,我们多次收到错误
“进程无法访问文件'XXX',因为它正由另一个进程使用。”
如何在写入文件之前检入C#,其他进程没有使用它?
答案 0 :(得分:17)
你不能,基本上 - 你必须尝试打开文件进行写作,如果你得到一个例外,你就不能写信给它:(
即使你可以先进行单独的检查,结果也会在你开始写作之前过时 - 你最后可能会以异常结束。
如果框架提供TryOpen
方法,那将是很好的,诚然......
答案 1 :(得分:8)
这里唯一的选择是捕获生成的异常并适当地处理它。请参阅其他两个SO线程进行全面讨论:
答案 2 :(得分:7)
在您的代码中使用后,您必须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
答案 3 :(得分:2)
您只需尝试使用您想要的共享访问权限打开,并处理引发的错误。
注意:有时文件无法打开只是因为您指定的文件共享权限与某人已经打开文件的文件共享权限冲突。
答案 4 :(得分:1)
尝试将open命令放在try-catch语句中。如果正在使用该文件,则抛出IOException。
答案 5 :(得分:0)
如果您能够重命名,请尝试重命名该文件,然后确认没有其他进程正在访问该文件。最后确保您已在同一文件夹中重命名了同一文件。