在C#中使用File.Copy时如何避免“由另一个进程使用”

时间:2012-03-21 07:52:06

标签: c# process copy

我正在尝试使用以下代码将文件从路径复制到另一个:

 File.Copy(oldPath, newPath);.

newPath表示路径和文件名,如C:\txt.txt

oldPath表示路径和文件名,如d:\d.txt

我得到以下例外:

  

C:\ txt.txt从其他进程使用

为什么会出现此问题?

2 个答案:

答案 0 :(得分:2)

可能发生八种可能的异常:UnauthorizedAccessException,ArgumentException,ArgumentNullException,PathTooLongException,DirectoryNotFoundException,FileNotFoundException,FileNotFoundException,IOException或NotSupportedException(请参阅http://msdn.microsoft.com/en-us/library/c6cfw35a.aspx的MSDN文档以查找这些异常的详细信息)。

您表示该文件已被创建该文件的进程锁定。这应该可以解决你的问题:

using (FileStream fs = File.Create("c:\\michal.txt")) 
{ 
}

File.Copy("c:\\michal.txt", "c:\\michal_new.txt");

File.Delete("c:\\michal.txt");
File.Delete("c:\\michal_new.txt");

答案 1 :(得分:1)

通常原因是因为Windows中的某个程序正在使用您要复制的文件 - 在我的情况下,Visual Studio cs使用的文件是在调试文件中...