/// <summary> /// Compares two files contents. /// </summary> /// <param name="filePath1">File or folder 1 to compare.</param> /// <param name="filePath2">File or folder 2 to compare.</param> /// <returns>True if file is modified. False - otherwise.</returns> private static bool IsModified(string filePath1, string filePath2) { if (FsPath.IsFolder(filePath1) && FsPath.IsFolder(filePath2)) { return(false); } try { if (new FileInfo(filePath1).Length == new FileInfo(filePath2).Length) { byte[] hash1; byte[] hash2; using (var alg = System.Security.Cryptography.MD5.Create()) { using (FileStream stream = new FileStream(filePath1, FileMode.Open, FileAccess.Read, FileShare.None)) { hash1 = alg.ComputeHash(stream); } using (FileStream stream = new FileStream(filePath2, FileMode.Open, FileAccess.Read, FileShare.None)) { hash2 = alg.ComputeHash(stream); } } return(!hash1.SequenceEqual(hash2)); } } catch (IOException) { // One of the files is blocked. Can not compare files and start sychronization. return(false); } return(true); }