繁体   English   中英

仅复制较新的文件

[英]Copy only files that are newer

我目前正在使用此代码:

    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)-任何较新的文件都将被复制。

有关更多信息,请参见FileInfo类

尝试执行此操作时,请务必小心,以免锁定该文件,否则可能无法完成另一个应用程序,并且在准备就绪之前可以尝试将其复制。

因此,请按照以下步骤操作...

1)尝试锁定文件

2)if(锁住)复制文件

3)否则等待一会儿

4)转到1

:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM