最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:
项目是.NET CORE,所以使用C#进行编写比较方法
文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式...下面我们开始尝试各个比较方法,选出最优的解决方案:
比较两个文件是否完全相同,首先想到的是用哈希算法(如MD5,SHA)算出两个文件的哈希值,然后进行比较....我想到了LINQ中有一个比较序列的方法SequenceEqual,我们尝试使用该方法比较:
///
/// 读入到字节数组中比较(使用LINQ的SequenceEqual比较)
//...对于我们的需求,因为我们不会更改数组的值,所以可以使用另外一个只读的类型 ReadOnlySpan追求更高的效率....方法,该方法是ReadOnlySpan的一个扩展方法,要注意它只是方法名与LINQ中一样,实现完全不同.