【问题标题】:Make sure file got copied successfully using c#确保使用 c# 成功复制文件
【发布时间】:2011-05-22 16:21:20
【问题描述】:

我正在创建一个应用程序来将文件从源目录备份到目标目录。我将源文件夹和目标文件夹中的文件信息存储在单独的列表中,然后根据列表的大小、修改日期等比较列表,以查看需要复制哪些文件。

无论如何,关键是我最终得到了一个需要复制的文件列表,我想知道每个文件需要多少时间,因此我尝试了以下技术:

Technique 1

Technique 2

Thechnique 3:常规 File.Copy("source....","Destination")

前两种技术很棒,因为我可以看到进步。问题是当我使用这些技术复制一些文件时,新文件有时会有不同的日期。我希望这两个文件具有相同的修改日期和相同的创建日期。此外,如果由于某种原因我的程序崩溃,正在复制的文件将被损坏,因为我尝试复制一个大文件(在 Windows 中复制一个大约需要一分钟的文件),如果我退出我的程序同时正在复制文件正在复制的文件有时具有相同的属性和相同的大小,所以我想确保我没有损坏的文件,以防我的程序崩溃。

也许我应该使用以太技术 1 或 2,然后最后从源文件复制属性并将其分配给目标文件。我不知道该怎么做。

【问题讨论】:

    标签: c# file copy filestream


    【解决方案1】:

    FileInfo 具有可设置的成员 CreationTime 和 LastWriteTime - 因此您可以选择您喜欢的技术,然后在有帮助的情况下设置日期。

    【讨论】:

      【解决方案2】:

      您是否考虑过只编写一个调用robocopy 的shell 脚本?每当我不得不运行这样的备份任务时,我只需编写一个脚本——robocopy 已经为我完成了繁重的工作,因此通常不需要创建定制的应用程序。

      【讨论】:

        【解决方案3】:

        我有一个解决方案,但它很长:

        我知道我可以从源复制文件,然后在目标中将文件命名为其他名称,例如“fileHasNotBeenCopiedYet”,属性为隐藏,然后当我的程序完成复制文件时,将名称更改为源名称并复制属性然后后者我知道如果存在具有该名称的文件(“fileHasNotBeenCopiedYet”),则表示该文件已损坏。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-12
          • 2016-11-21
          • 2019-06-18
          • 2023-01-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多