[英]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.