C# 跳过复制时的重复文件

C# 跳过复制时的重复文件,c#,C#,我正在将文件从一个文件夹移动到另一个文件夹destination1到destination2但是,如果destination2已经有来自destination1的文件副本,我只想跳过并继续复制过程,而不是覆盖,这将花费更长的时间。 我已经尝试过:FileSystem.CopyFile(destination1,destination2,true)将覆盖该文件。无论如何,我可以在完成这项工作时获得一些帮助。您可以使用方法检查文件是否已经存在: if(!File.Exists(destination

我正在将文件从一个文件夹移动到另一个文件夹
destination1
destination2
但是,如果destination2已经有来自destination1的文件副本,我只想跳过并继续复制过程,而不是覆盖,这将花费更长的时间。 我已经尝试过:
FileSystem.CopyFile(destination1,destination2,true)将覆盖该文件。无论如何,我可以在完成这项工作时获得一些帮助。

您可以使用方法检查文件是否已经存在:

if(!File.Exists(destination2))
{
    // copy file
}
您可以使用方法检查文件是否已存在:

if(!File.Exists(destination2))
{
    // copy file
}

您说过要避免覆盖,那么为什么要传递最后一个参数的
true

您是否尝试过传递
false

FileSystem.CopyFile(destination1, destination2, false);
作为旁注,请记住,系统永远不会比较两个文件以了解它们是否相同,然后跳过副本。 如果您想要完成此行为,那么您必须自己实现它,但由于需要完全读取目标文件,因此它通常比简单地覆盖要重,除非您实现某种缓存机制或者目标文件已经(并且仍然)在系统缓存中

问候,,
Daniele.

您说过要避免覆盖,那么为什么要通过最后一个参数的
true

您是否尝试过传递
false

FileSystem.CopyFile(destination1, destination2, false);
作为旁注,请记住,系统永远不会比较两个文件以了解它们是否相同,然后跳过副本。 如果您想要完成此行为,那么您必须自己实现它,但由于需要完全读取目标文件,因此它通常比简单地覆盖要重,除非您实现某种缓存机制或者目标文件已经(并且仍然)在系统缓存中

问候,,
Daniele.

那么决定跳过文件的循环的“else”是什么呢但我认为没有其他必要。如果这是循环中唯一的代码body@Selman22如果复制仅用于名称,则为True。如果必须考虑内容之间的差异,可能会得到更多work@Selman22这似乎做得很好,如果我的程序需求增长,那么我将添加到循环中,但非常感谢。那么,决定循环跳过文件的“else”是什么呢但我认为没有其他必要。如果这是循环中唯一的代码body@Selman22如果复制仅用于名称,则为True。如果必须考虑内容之间的差异,可能会得到更多work@Selman22这似乎做得很好,如果我的程序在需求中增长,那么我将添加到循环中,但非常感谢。是的,我尝试了“false”,但是它没有按照我想要的那样工作,但是if(!File.Exists)。。。。你的建议行不通。如果将overwrite参数设置为
false
,应用程序将对重复文件抛出
IOException
异常。是的,我尝试了“false”,但是它没有按照我的要求工作,但是If(!File.Exists)。。。。你的建议行不通。如果将覆盖参数设置为
false
,应用程序将对重复文件抛出
IOException
异常。