0

我目前正在使用此代码:

    if (!Directory.Exists(command2)) Directory.CreateDirectory(command2);

    if (Directory.Exists(vmdaydir)) Directory.Delete(vmdaydir,true);

    if (!Directory.Exists(vmdaydir)) Directory.CreateDirectory(vmdaydir);

    var dir = Path.GetDirectoryName(args[0]);

    sb.AppendLine("Backing Up VM: " + DateTime.Now.ToString(CultureInfo.InvariantCulture));
    Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(dir, vmdaydir);
    sb.AppendLine("VM Backed Up: " + DateTime.Now.ToString(CultureInfo.InvariantCulture));

如您所见,我正在删除目录,然后将文件夹复制回来。由于该目录的大小约为 80gb,因此这需要很长时间。我意识到我不需要复制所有文件,只需复制已更改的文件。

如何将文件从一个文件夹复制到另一个文件夹,但只复制较新的文件?有人有什么建议吗?

==== 编辑 ====

我假设我可以对每个文件进行文件比较,然后将其复制到新目录,遍历每个文件夹/文件?有没有更简单的方法来做到这一点?

4

2 回答 2

1

使用 FileInfo 类,并使用 LastWriteTime 属性获取文件的最后修改时间。将其与您检查的时间进行比较,并仅获取较晚的文件。

遍历目录中的文件,检查最后修改时间 (FileInfo.LastWriteTime) - 任何较新的文件都会被复制。

有关详细信息,请参阅FileInfo 类

于 2012-10-10T21:34:00.807 回答
0

尝试执行此操作时需要小心,否则您可能会锁定文件,否则另一个应用程序可能无法完成它,您可能会在准备好之前尝试复制它。

所以请按照以下步骤...

1) 尝试锁定文件

2) if(got lock) 复制文件

3) else 稍等片刻

4) 转到 1

:)

于 2012-10-10T21:38:49.700 回答