我有兩個文件目錄,我想確保兩個文件都相同。因此我創建了一個查詢將所有文件放入FileInfo數組中。我通過它們的FileName對所有文件進行了分組,並且現在要爲每個組比較兩個文件的'LastWriteAccess'和'Length'。Fast FileSize與Linq比較
但說實話,就像我這樣做,它的速度很慢。任何想法如何我可以比較一個組內的文件關於他們的長度,並讓我做'''',如果不同?
...
FileInfo[] fiArrOri5 = d5ori.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly);
FileInfo[] fiArrNew5 = d5new.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly);
FileInfo[] AllResults = new FileInfo[fiArrNew5.Length+fiArrOri5.Length];
fiArrNew5.CopyTo(AllResults, 0);
fiArrOri5.CopyTo(AllResults, fiArrNew5.Length);
var duplicateGroups = AllResults.GroupBy(file => file.Name);
foreach (var group in duplicateGroups)
{
AnzahlElemente = group.Count();
if (AnzahlElemente == 2)
{
if (group.ElementAt(0).Length != group.ElementAt(1).Length)
{
// do sth
}
}
...
}
編輯:
,如果我只運行下面的代碼片段,它運行超級快。 (〜00:00:00:0005156)
Console.WriteLine(group.ElementAt(0).LastWriteTime);
如果我只運行下面的代碼片段,它運行速度非常慢。 (〜00:00:00:0750000)
Console.WriteLine(group.ElementAt(1).LastWriteTime);
任何想法爲什麼?
你想爲每一個不同的文件做一些事情?或者只是兩個目錄之間有什麼區別? –
緩慢的部分可能會從磁盤讀取FileInfo,對於每個文件... –
Do Sth =如果'原始'目錄的文件具有更新的'LastWriteAccess'日期或不同'長度'的文件「鏡像」目錄中的複製作業將開始替換鏡像側的文件。 Slow Part是ElementAt(0)與ElementAt(1)的'比較'。如果我刪除IF部分,程序將在幾秒鐘內完成400.000個文件。如果我用當前給定的方式進行比較,則需要6個小時。這就是爲什麼我問是否有另一種選擇來比較像我一樣。 –