public static bool FileCompare(string first, string second) { FileInfo F1 = new FileInfo(first); FileInfo F2 = new FileInfo(second); if(F1.Length != F2.Length) { return false; } using(FileStreamEx fs1 = new FileStreamEx(first, FileMode.Open)) { using(FileStreamEx fs2 = new FileStreamEx(second, FileMode.Open)) { int Blocksize = 65536; long Progress = 0; byte[] buffer = new byte[Blocksize]; byte[] buffer2 = new byte[Blocksize]; while (Progress < fs1.Length) { if ((Progress + Blocksize) <= fs1.Length) { buffer = fs1.ReadBytes(Blocksize); buffer2 = fs2.ReadBytes(Blocksize); if (!CompareArray(buffer, buffer2)) return false; Progress += Blocksize; } else { int Remaining = (int)(fs1.Length - Progress); byte[] Rem1 = fs1.ReadBytes(Remaining); byte[] Rem2 = fs2.ReadBytes(Remaining); if (!CompareArray(Rem1, Rem2)) return false; Progress += Remaining; } } } } return true; }