使用SymmetricDifference比较两个不同文件的文件夹?我有两个文件夹A和B..那里有两个文件夹,里面有很多文件夹和文件...我正在比较这两个文件夹中相同文件的对称差异,并将名称和目录名称写入文本文件...我已经使用了这段代码如果(x==null||y==null)返回false;//如果名称和长度相同,则2个文件相等。返回x.Name==y.Name&&x.Length==y.Length&&x.LastWriteTime==y.LastWriteTime;}publicoverrideintGetHashCode(FileInfoobj){returnobj==null?0:obj.Name.GetHashCode()^obj.Length.GetHashCode();}}//构造自定义equality-comparer.varcomparer=newFileInfoNameLengthEqualityComparer();从每个目录创建文件集。varsets=new[]{dir1,dir2}.Select(d=>d.GetFiles("*",SearchOption.AllDirectories)).Select(files=>newHashSet(files,comparer)).ToArray();//使第一个集合包含由equality-comparer.sets[0].SymmetricExceptWith(sets[1])确定的集合差异////将每个文件投影为其全名并将文件名//写入log-file.varlines=sets[0].Select(fileInfo=>fileInfo.FullName).ToArray();File.WriteAllLines(@"d:log1.txt",行);我需要的是,如果长度不同,我必须用目录名称写长度,如果名称不同,我必须用目录名称写名称,或者如果lastwritetime不同,我必须写lastwritetime和目录名称......有什么建议吗?使用以下格式:丢失的文件详细信息:--------------------文件名大小日期路径文件大小差异:---------------------------文件日期中的大小路径差异:------------------------日期path我认为你正在寻找不同的东西,真的:我将单独对待它,因为你已经知道如何做第一部分。要获得第二部分,您需要两组文件名的交集(只需使用交集扩展方法)。从那里你可以列出差异:vardifferentLengths=fromnameinintersectionletfile1=newFileInfo(directory1,name)letfile2=newFileInfo(directory2,name)wherefile1.Length!=file2.Lengthselectnew{Name=name,Length1=file1.Length,Length2=file2.Length};...然后你就可以打印出来了。然后您可以对最后一次写入时间执行相同的操作。换句话说,您实际上并不需要比较所有属性的比较器。以上就是C#学习教程:UseSymmetricDifferencetocomparetwofolderofdifferentfiles?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
