2014-09-10 81 views
-6

我需要将文件从本地硬盘复制到外部硬盘。我的想法是,我只想复制当前不存在的文件。我确信有这样一种更简单的方法可以做到,但这是我头脑最先发生的地方。
1)让我的C中的所有文件的列表:驱动器和写入一个文本文件
2)让我的l所有文件的列表:移动不存在的文件

我如何做到这一点的想法驱动器(备份)并写入文本文件
3)将C:驱动器文本文件与L:驱动器文本文件进行比较以找到不存在的文件
4)将不存在的文件的结果写入阵列
5 )迭代新创建的阵列并将文件复制到L:驱动器

是否有更有效/更省时的wa你完成这项任务吗?

+1

听起来不错,除非你真的不需要将文件列表写入文件,只需将它们存储在内存中即可。不要忘记遍历你的目录。 – 2014-09-10 18:32:41

+1

[Robocopy?](http://technet.microsoft.com/en-us/magazine/ee851678.aspx) – crashmstr 2014-09-10 18:32:53

+1

http://msdn.microsoft.com/en-us/library/system.io.file.move (v = vs.110).aspx – 2014-09-10 18:33:56

回答

-1

当然,您不想创建列出文件名的文本文件,然后进行比较。这将是低效率和笨重的。执行此操作的方法是遍历源目录以查找所有文件。随着你走,你会为每个文件创建一个匹配的目标路径。在复制文件之前,您需要决定是否复制它。如果目标路径中存在文件,请跳过复制。

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

您可能不希望做的一件事是首先建立所有文件的列表,然后开始复制。在迭代源目录时复制文件可能更有效。例如,您可以使用Directory.EnumerateFiles以高效的方式执行此操作。

当然,你不需要编写一个程序来做到这一点。数千人已经存在,其中一些非常有效。