public static IList <FileSignature> CreateSignatures( string path, string pattern = "*.*", Dictionary <string, FileSignature> precalculated = null) { var files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories); var result = new List <FileSignature>(files.Length); using (var md5 = MD5.Create()) for (int i = 0; i < files.Length; i++) { if (Str.Equals(files[i].LastPathSegment(), SignaturesFile)) { continue; } string relativePath = files[i].Substring(path.Length + 1); if (precalculated == null || !precalculated.TryGetValue(relativePath, out var signature)) { signature = new FileSignature { Path = relativePath, Md5Hash = getMd5Hash(md5, File.ReadAllBytes(files[i])) }; } result.Add(signature); } return(result); }
public static IList <FileSignature> CreateSignatures( FsPath path, string pattern = "*", Dictionary <FsPath, FileSignature> precalculated = null) { var files = path.EnumerateFiles(pattern, SearchOption.AllDirectories); var result = new List <FileSignature>(); using var md5 = MD5.Create(); foreach (FsPath file in files) { if (Str.Equals(file.Basename(), SignaturesFile.Value)) { continue; } var relativePath = file.RelativeTo(path); if (precalculated == null || !precalculated.TryGetValue(relativePath, out var signature)) { signature = new FileSignature { Path = relativePath, Md5Hash = getMd5Hash(md5, file.ReadAllBytes()) }; } result.Add(signature); } return(result); }