C# 移动不存在的文件

C# 移动不存在的文件,c#,C#,我需要将文件从本地硬盘复制到外部硬盘。我的想法是,我只想复制当前不存在的文件。我相信有一种更简单的方法可以做到这一点,但这是我首先想到的 我对如何做到这一点的想法: 1获取C:驱动器上所有文件的列表并写入文本文件 2获取我的L:驱动器备份中所有文件的列表,并写入文本文件 3比较C:驱动器文本文件和L:驱动器文本文件,以查找不存在的文件 4将不存在的文件的结果写入数组 5迭代新创建的数组并将文件复制到L:驱动器 是否有更有效/更省时的方法来完成此任务?请确保您不希望创建列出文件名的文本文件,然后比

我需要将文件从本地硬盘复制到外部硬盘。我的想法是,我只想复制当前不存在的文件。我相信有一种更简单的方法可以做到这一点,但这是我首先想到的

我对如何做到这一点的想法: 1获取C:驱动器上所有文件的列表并写入文本文件 2获取我的L:驱动器备份中所有文件的列表,并写入文本文件 3比较C:驱动器文本文件和L:驱动器文本文件,以查找不存在的文件 4将不存在的文件的结果写入数组 5迭代新创建的数组并将文件复制到L:驱动器


是否有更有效/更省时的方法来完成此任务?

请确保您不希望创建列出文件名的文本文件,然后比较它们。这将是低效和笨重的。方法是遍历源目录,查找所有文件。在运行过程中,您将为每个文件创建一个匹配的目标路径。在复制文件之前,您需要决定是否复制它。如果目标路径上存在文件,请跳过复制

这方面的一些增强可能包括仅当文件存在且上次修改的日期/时间和文件大小匹配时才跳过复制。诸如此类,我相信你可以想象这方面的变化

您可能不想做的一件事是首先构建所有文件的列表,然后开始复制。当您在源目录上进行迭代时,复制文件可能更有效。例如,你可以用一种有效的方式来做这件事


当然,您不需要编写程序来实现这一点。成千上万的文件已经存在,其中一些非常有效。

听起来不错,只是您不需要将文件列表写入文件,只需将它们存储在内存中即可。别忘了遍历目录。我只想复制当前不存在的文件。这听起来像理发师悖论:一种更低俗的方式?当然,只要用。robocopy.exe C:\L:\/e如果您还想复制属性信息,您可能还需要/sec或/copyall。