1

我有一个要备份的文件,我没有任何东西“接触”我“知道”的文件。但我得到消息:

"The process cannot access the file 'C:\Cadence\SPB_Data\pcbenv\allegro.ilinit' because it is being used by another process

源代码:

string fileName = @"C:\Cadence\SPB_Data\pcbenv\allegro.ilinit";
string sourcePath = @"C:\Cadence\SPB_Data\pcbenv";
string targetPath = @"C:\Cadence\SPB_Data\pcbenv\backup";

// Use Path class to manipulate file and directory paths. 
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);

// To copy a folder's contents to a new location: 
// Create a new target folder, if necessary. 
if (!System.IO.Directory.Exists(targetPath))
{
    System.IO.Directory.CreateDirectory(targetPath);
}

// To copy a file to another location and  
// overwrite the destination file if it already exists.
System.IO.File.Copy(sourceFile, destFile, true);

因此,只要程序到达这一行“System.IO.File.Copy(sourceFile, destFile, true);” 我得到了错误。有什么方法可以“强制”复制吗?

4

3 回答 3

1

问题是复制操作的源和目标是相同的。您使用Path.Combine不正确。从文档中:

如果 path2 包含根,则返回 path2。

由于您在path2(第二个参数)中都有根,sourceFile并且destFile是 的值fileName

你可能想声明string fileName = "allegro.ilinit"而不是你拥有什么。

显然,异常消息有些误导。

于 2013-06-19T03:57:07.063 回答
1

在尝试复制之前,您是否在应用程序中创建此文件/写入此文件?如果您确实创建/写入了它,那么您可能忘记在那之后关闭它。

于 2013-06-19T00:02:31.313 回答
0

如果其他进程已将该文件标记为“读锁定”,那么您将无法复制该文件。

最好的办法是使用Process Explorer找出锁定文件的进程。

于 2013-06-18T23:54:11.503 回答