c# - 将内存流与文件 C# .NET 进行比较的最有效方法

标签 c# .net image file comparison

我有一个包含 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/

相关文章:

c# - 如何在 web.config 文件中写入连接字符串并从中读取?

.net - 在单元测试 HttpClient 时如何模拟 GetDiscoveryDocumentAsync?

java - 如何在第二个窗口中更新 jFrame?

c# - ResourceDictionary 中的 Windows 样式不适用

c# - Entity Framework 不导入具有 super 键的表

c# - 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?

.net - 在以下主要来源中找不到包

c# - Power BI Embedded - 嵌入图 block

html - 本地计算机上的 Img Src

xcode - 如何更改 ImageView 的图像?