使用SymmetricDifference比较两个不同文件的文件夹?
我有两个文件夹A和B ..在那里有两个文件夹,有很多文件夹和文件…我正在比较这两个文件夹中是否存在对称差异的相同文件,并将名称和目录名称写入文本文件…我用过这段代码
public class FileInfoNameLengthEqualityComparer : EqualityComparer { public override bool Equals(FileInfo x, FileInfo y) { if (x == y) return true; if (x == null || y == null) return false; // 2 files are equal if their names and lengths are identical. return x.Name == y.Name && x.Length == y.Length && x.LastWriteTime== y.LastWriteTime; } public override int GetHashCode(FileInfo obj) { return obj == null ? 0 : obj.Name.GetHashCode() ^ obj.Length.GetHashCode(); } } // Construct custom equality-comparer. var comparer = new FileInfoNameLengthEqualityComparer(); // Create sets of files from each directory. var sets = new[] { dir1, dir2 } .Select(d => d.GetFiles("*", SearchOption.AllDirectories)) .Select(files => new HashSet(files, comparer)) .ToArray(); // Make the first set contain the set-difference as determined // by the equality-comparer. sets[0].SymmetricExceptWith(sets[1]); // Project each file to its full name and write the file-names // to the log-file. var lines = sets[0].Select(fileInfo => fileInfo.FullName).ToArray(); File.WriteAllLines(@"d:log1.txt", lines);
我需要的是,如果长度不同,我必须与目录名称一起写长度,如果名称不同,我必须与目录名称一起写名称,或者如果lastwritetime不同,我必须写lastwritetime和目录名称…任何建议?
采用以下格式:
Missed Files detail : --------------------- File Name Size Date Path Discrepancies in File Size: -------------------------- Size Path Discrepancies in File Date: -------------------------- date path
我觉得你正在寻找不同的东西,真的:
我会分开对待这些。 你已经知道如何做第一部分了。 要获得第二部分,您需要两组文件名的Intersect
(只需使用Intersect
扩展方法)。 从那里你可以列出差异:
var differentLengths = from name in intersection let file1 = new FileInfo(directory1, name) let file2 = new FileInfo(directory2, name) where file1.Length != file2.Length select new { Name = name, Length1 = file1.Length, Length2 = file2.Length };
…然后你可以打印出来。 然后,您可以为上次写入时间执行相同操作。
换句话说,您实际上并不需要一个比较所有属性的比较器。
上述就是C#学习教程:使用SymmetricDifference比较两个不同文件的文件夹?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1038913.html