FileInfo CopyTo方法抛出IOException(.net)

时间:2010-11-24 15:59:25

标签: c#

FileInfo类的CopyTo方法抛出IOException

该进程无法访问文件“C:\ Data \ Test.XML”,因为它正由另一个进程使用。

关于为什么会发生这种情况的任何想法?我知道复制文件只需要读访问权限。理想情况下,即使文件被写保护或被其他程序打开,CopyTo也应该没有问题。

FileInfo copyFile = null;

//currentFile.FileInformation is of type FileInfo which is referring to the file for which a copy is being created. In this case it is C:\Data\Test.XML
System.IO.FileInfo file = new FileInfo(currentFile.FileInformation.FullName);

// Constructing name for the temporary copy of Test.XML
string newName = "Temp Copy of " + currentFile.FileInformation.Name;

//This is where I get the exception. The CopyTo fails...
copyFile = file.CopyTo(System.IO.Path.Combine(currentFile.FileInformation.DirectoryName, newName), true);

fs = System.IO.File.Open(copyFile.FullName, FileMode.Open);

还需要注意一些要点:

  • 我有权访问我要复制的文件夹。这只发生在某些文件中。
  • 我尝试创建副本的文件不是只读。

如果我能为您提供更多详细信息,请与我们联系

提前致谢

3 个答案:

答案 0 :(得分:2)

  • 下载sysinternal's process explorer
  • 在File.CopyTo
  • 上放置一个断点
  • 在进程资源管理器中,搜索文件名,它将告诉您打开哪个进程

答案 1 :(得分:0)

如果您使用的是Windows,请尝试使用Process Explorer来确定使用您要复制的文件的进程。

答案 2 :(得分:0)

另一个进程可能在打开文件时指定了FILE_SHARE_READ模式,这会阻止您阅读它。

您可以使用Process Explorer来查找该过程。