Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }