前言:我的情况是需要检测目标目录文件在发生变动时,将其拷贝至另一个目录
Hash比较法
static bool CompareFileHash(string sourcePath, string targetPath) { // 目标文件不存在,则返回不相同 if (!File.Exists(targetPath)) return false; string getHash(string filePath) { using (var md5 = MD5.Create()) using (var stream = File.OpenRead(filePath)) { byte[] hashBytes = md5.ComputeHash(stream); return BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant(); } } var hash1 = getHash(sourcePath); var hash2 = getHash(targetPath); Debug.Log($"{sourcePath}|{hash1}\n{targetPath}|{hash2}"); return hash1 == hash2; }
增加文件长度比较
public static bool CompareFile(string sourcePath, string targetPath) { if (!File.Exists(targetPath)) return false; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (sourceInfo.Length != targetInfo.Length) return false; return CompareFileHash(sourcePath,targetPath); }