我正在创建一个应用程序来将文件从源目录备份到目标目录。我将源文件夹和目标文件夹中的文件信息存储在单独的列表中,然后根据列表的大小、修改日期等比较列表,以查看需要复制哪些文件。
无论如何,关键是我最终会得到一个需要复制的文件列表,我想知道每个文件需要多少时间,因此我尝试了以下技术:
技术 1
技术 2
Thechnique 3:常规文件.复制("源....","目的地")
前两种技术很棒,因为我可以看到进度。问题是,当我使用这些技术复制某些文件时,新文件有时会有不同的日期。我希望两个文件具有相同的修改日期和相同的创建日期。此外,如果由于某种原因我的程序崩溃,正在复制的文件将被损坏,因为我尝试复制一个大文件(一个大约需要一分钟才能在 windows 中复制的文件),如果我退出我的程序同时正在复制文件正在复制的文件有时具有相同的属性和相同的大小,所以我想确保我没有损坏的文件如果我的程序崩溃。
也许我应该使用以太技术 1 或 2,然后在最后从源文件中复制属性并将其分配给目标文件。我不知道该怎么做。
FileInfo具有可设置的成员CreationTime和LastWriteTime - 因此您可以满足于自己的偏好技术,并在之后设置日期,如果有帮助的话。
您是否考虑过只编写一个调用 robocopy 的 shell 脚本? 每当我不得不运行这样的备份任务时,我只需编写一个脚本 - robocopy 已经为我完成了繁重的工作,因此通常不需要创建定制的应用程序。
我有一个解决方案,但它很长:
我知道我可以从源复制文件,然后在目标中将文件命名为其他名称,例如"fileHasNotBeenCopiedYet",其属性为 hidden 然后当我的程序完成复制文件时,将名称更改为源名称并复制属性,然后我知道如果存在具有该名称的文件("fileHasNotBeenCopiedYet"),则意味着该文件已损坏。