簡體   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