C# 仅复制较新的文件

C# 仅复制较新的文件,c#,copy,C#,Copy,我目前正在使用此代码: 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

我目前正在使用此代码:

    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,这需要很长时间。我意识到我不需要复制所有的文件,只需要那些已经更改的文件

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

==编辑====


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

使用FileInfo类,并使用LastWriteTime属性获取文件的上次修改时间。将其与您正在检查的时间进行比较,并只获取稍后的文件

循环浏览目录中的文件,检查上次修改的时间(FileInfo.LastWriteTime)——复制所有较新的文件


有关详细信息,请参阅。

尝试执行此操作时需要小心,这样可以锁定文件,否则其他应用程序可能无法完成此操作,您可以在准备就绪之前尝试复制它

所以按照这些步骤

1) 试图锁定文件

2) 如果(得到锁)复制文件

3) 否则等一会儿

4) 转到1


:)

CreateDirectory
将仅在它不存在时创建它,因此检查是多余的。您看过这个吗?从什么时候开始变了?在逻辑发生之前,您需要缓存每个文件的上次写入日期。。你现在在做吗?@TimSchmelter谢谢Tim我会相应调整的。@SimonWhitehead你知道我在做什么。我没有检查任何东西……我的主管甚至会因为我提到goto这个词而对我开枪:Plol,告诉你的主管goto在编码方面有很好的功能。在学习如何编码中使用,但是是的。。。goto=一个大的不:)是的,这就是我想的。。。我现在正在考虑这样做。