C# File.copy是否删除目标文件?可能吗?

C# File.copy是否删除目标文件?可能吗?,c#,C#,我使用一个简单的代码: File.Copy(source, destination, true); 将文件从UNC路径(源)复制到本地路径(目标)。第三个参数表示,如果文件已经存在,它将被覆盖 这能起到99%的效果。但是,当源文件被锁定时,我有时会看到以下错误: 进程无法访问文件“\xxxx\aaaa.dll”,因为另一个进程正在使用该文件 然后目标文件仍然消失。我只能认为File.Copy首先删除了本地文件,然后当它试图复制内容时,失败并抛出异常 是这样的,我怎样才能防止这种情况发生?无法复

我使用一个简单的代码:

File.Copy(source, destination, true);
将文件从UNC路径(源)复制到本地路径(目标)。第三个参数表示,如果文件已经存在,它将被覆盖

这能起到99%的效果。但是,当源文件被锁定时,我有时会看到以下错误:

进程无法访问文件“\xxxx\aaaa.dll”,因为另一个进程正在使用该文件

然后目标文件仍然消失。我只能认为
File.Copy
首先删除了本地文件,然后当它试图复制内容时,失败并抛出异常

是这样的,我怎样才能防止这种情况发生?

无法复制

File.Create(@"c:\test\source.txt");
File.Create(@"c:\test\target.txt");
var stream = 
    File.Open(@"c:\test\source.txt", FileMode.Open, FileAccess.Read);
File.Copy(@"c:\test\source.txt", @"c:\test\target.txt", true);
抛出异常,但保留目标文件。

显示当源文件在打开时抛出共享冲突时,目标文件未被访问


当源文件被锁定时,显示的代码甚至没有触及目标文件,更不用说删除它了。

您尝试过这个问题中的方法吗这是极为常见的例外。问题在于它说了什么。该文件已被其他进程锁定。@jmstoker:本质上是一个网络路径,而不是本地设备。@jmstoker通用命名约定-Windows-specific@MobyDisk:所有这些都会告诉你,锁定系统工作正常。显然它删除了文件;首先锁定它只会阻止它被删除。嘿,我正要发布相同的代码来澄清我们的讨论+1此处相同,SMB/Samba上相同。这只会非常随机地发生,而且unc路径在文件夹上启用了dfs。这会有任何影响吗?这只会非常随机地发生,而且unc路径(源)在文件夹上启用了dfs。这会有什么影响吗?当源文件不可读时,复制功能似乎甚至不关心目标文件。当目标文件被删除时,无论源文件是否可读,这都是非常不体贴的。您希望
Copy(“不存在”,“存在”,true)
删除现有文件吗?当源文件被锁定时,是否确定目标文件已被程序删除?