Compare binary files in C#

后端 未结 6 2107
渐次进展
渐次进展 2020-12-07 18:09

I want to compare two binary files. One of them is already stored on the server with a pre-calculated CRC32 in the database from when I stored it originally.

I know

6条回答
  •  忘掉有多难
    2020-12-07 18:28

    static bool FileEquals(string fileName1, string fileName2)
    {
        // Check the file size and CRC equality here.. if they are equal...    
        using (var file1 = new FileStream(fileName1, FileMode.Open))
            using (var file2 = new FileStream(fileName2, FileMode.Open))
                return FileStreamEquals(file1, file2);
    }
    
    static bool FileStreamEquals(Stream stream1, Stream stream2)
    {
        const int bufferSize = 2048;
        byte[] buffer1 = new byte[bufferSize]; //buffer size
        byte[] buffer2 = new byte[bufferSize];
        while (true) {
            int count1 = stream1.Read(buffer1, 0, bufferSize);
            int count2 = stream2.Read(buffer2, 0, bufferSize);
    
            if (count1 != count2)
                return false;
    
            if (count1 == 0)
                return true;
    
            // You might replace the following with an efficient "memcmp"
            if (!buffer1.Take(count1).SequenceEqual(buffer2.Take(count2)))
                return false;
        }
    }
    

提交回复
热议问题