我需要将文件从本地硬盘复制到外部硬盘。我的想法是,我只想复制当前不存在的文件。我相信有一种更简单的方法可以做到这一点,但这是我的思想先行的地方。
我对如何做到这一点的想法:
1)获取我的C:驱动器上所有文件的列表并写入文本文件
2)获取L:驱动器(备份)上所有文件的列表并写入文本文件
3)将C:驱动器文本文件与L:驱动器文本文件进行比较,找到不存在的文件
4)将不存在的文件的结果写入阵列
5)迭代新创建的数组并将文件复制到L:驱动器
有没有更有效/更有效的方法来完成这项任务?
答案 0 :(得分:-1)
确定您不想创建列出文件名的文本文件,然后比较它们。这将是低效和笨重的。执行此操作的方法是遍历源目录以查找所有文件。随着时间的推移,您将为每个文件创建匹配的目标路径。在复制文件之前,您需要决定是否复制它。如果目标路径中存在文件,请跳过复制。
对此的一些增强可能包括仅在文件存在且上次修改的日期/时间和文件大小匹配时才跳过复制。等等,我相信你可以想象这个变种。
您可能不想做的一件事是首先构建所有文件的列表,然后开始复制。在迭代源目录时复制文件可能更有效。例如,您可以使用Directory.EnumerateFiles
以有效的方式执行此操作。
当然,您不需要编写程序来执行此操作。已经存在数千种,其中一些非常有效。