在C#中检查文件真实性的最快方法

时间:2016-03-18 00:27:45

标签: c# file io

我有一个正在运行的Windows服务。下载zip文件后,应检查该文件。目前,它将使用MD5哈希进行检查。但是文件大小约为1 GB时,这并不是很快。改变这种情况的另一个原因是,在将文件读入字节数组时,我在Windows 7 64位机器上获得了一个outofmemory异常。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

也许MD5看起来更简单,但是这样的东西也应该起作用(并且它与内存无关):

static bool Compare(string filePath1, string filePath2)
{
    using (FileStream file = File.OpenRead(filePath1))
    {
        using (FileStream file2 = File.OpenRead(filePath2))
        {
            if (file.Length != file2.Length)
            {
                return false;
            }

            int count;
            const int size = 0x1000000;

            var buffer = new byte[size];
            var buffer2 = new byte[size];

            while ((count = file.Read(buffer, 0, buffer.Length)) > 0)
            {
                file2.Read(buffer2, 0, buffer2.Length);

                for (int i = 0; i < count; i++)
                {
                    if (buffer[i] != buffer2[i])
                    {
                        return false;
                    }
                }
            }
        }
    }

    return true;
}