C # сохраните MD5 каждого файла в каталоге, а также файлы во всех вложенных / дочерних / подкаталогах, в текстовый файл

#c# #hash

#c# #хэш

Вопрос:

Я пытаюсь создать журнал всех файлов в данном каталоге (корневой каталог MyGlobals.finalPathForWork ), а также каждого файла в дочернем каталоге или подкаталоге, который включает 1) все файлы и пути; и 2) MD5 каждого файла.

Первая часть кода, MyMethod5 , касающаяся путей к файлам, работает правильно. Проблема заключается в том, чтобы сделать то же самое с MD5 каждого из этих файлов. Я думаю, что код в CalculateMD5 должен генерировать MD5, но я не знаю, как вернуть значение / строку, которую он получает, для каждого файла, и как записать это в тот же текстовый файл, что и MyMethod5 делает.

Как мне использовать этот MD5, который вычисляется в CalculateMD5 , и записать его в log.txt как в MyMethod5() ?

         public static void MyMethod5()
        {
            foreach (string file in Directory.EnumerateFiles(MyGlobals.finalPathForWork, "*.*", SearchOption.AllDirectories))
            {
                //Console.WriteLine(file);
                File.AppendAllText(MyGlobals.finalPathForWork   @"\Log.txt", file   Environment.NewLine);

                CalculateMD5(file);
            }
        }

       public static string CalculateMD5(string filename)
        {
            using (var md5 = MD5.Create())
            {
                using (var stream = File.OpenRead(filename))
                {
                    var hash = md5.ComputeHash(stream);

                    return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
                }
            }
        }
  

Ответ №1:

В итоге я сделал это с этим, но если вы видите возможности для улучшения, пожалуйста, дайте мне знать:

     public static void MyMethod5()
        {
            foreach (string file in Directory.EnumerateFiles(MyGlobals.finalPathForWork, "*.*", SearchOption.AllDirectories))
            {
                //Console.WriteLine(file);
                File.AppendAllText(MyGlobals.finalPathForWork   @"\Log.txt", file   Environment.NewLine);
                CalculateMD5(file);
            }
        }

       public static void CalculateMD5(string filename)
        {
            DateTime current = DateTime.Now;
            string file = filename;
            string output;
            using (var md5 = MD5.Create())
            {
                using (var stream = File.OpenRead(file))
                {
                    byte[] checksum = md5.ComputeHash(stream);
                    output = BitConverter.ToString(checksum).Replace("-", String.Empty).ToLower();
                    File.AppendAllText(MyGlobals.finalPathForWork   @"\Log.txt", "Hash:"   output   Environment.NewLine);
                }
            }
        }