2014-09-10 58 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以高效的方式執行此操作。

當然,你不需要編寫一個程序來做到這一點。數千人已經存在,其中一些非常有效。