我有两个文件目录,我想确保两个文件都相同。因此我创建了一个查询将所有文件放入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个小时。这就是为什么我问是否有另一种选择来比较像我一样。 –