我有一个包含 PNG 编码图像字节的 MemoryStream,我想检查磁盘目录中是否存在该图像数据的精确副本。第一个明显的步骤是只查找与精确长度匹配的文件,但在此之后我想知道比较内存和文件的最有效方法是什么。我在使用流方面不是很有经验。
我对这件事有几个想法:
首先,如果我可以获得该文件的哈希码,那么(大概)比较哈希码会比比较图像的每个字节更有效。同样,我可以只比较图像的一些字节,给出一个“足够接近”的答案。
然后我当然可以只比较整个流,但我不知道那会多快。
将 MemoryStream 与文件进行比较的最佳方法是什么?在 for 循环中逐字节?
最佳答案
另一种解决方案:
private static bool CompareMemoryStreams(MemoryStream ms1, MemoryStream ms2)
{
if (ms1.Length != ms2.Length)
return false;
ms1.Position = 0;
ms2.Position = 0;
var msArray1 = ms1.ToArray();
var msArray2 = ms2.ToArray();
return msArray1.SequenceEqual(msArray2);
}
关于c# - 将内存流与文件 C# .NET 进行比较的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978727/