簡體   English   中英

C#將目錄中每個文件的MD5以及所有嵌套/子/子目錄中的文件保存到文本文件中

[英]C# save MD5 of each file in a directory, as well as files in all nested/child/sub directories, to a text file

我正在嘗試為給定目錄(根目錄是MyGlobals.finalPathForWork )中的所有文件以及包含 1)所有文件和路徑的子目錄或子目錄中的每個文件創建日志; 和 2) 每個文件的 MD5。

代碼的第一部分MyMethod5處理文件路徑工作正常。 問題是對每個文件的 MD5 執行相同的操作。 我認為CalculateMD5的代碼應該生成MD5,但我不知道如何為每個文件返回它獲得的值/字符串,以及如何像MyMethod5一樣將其寫入同一個文本文件。

我如何使用在CalculateMD5CalculateMD5出的 MD5 並將其寫入log.txtMyMethod5()

        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();
                }
            }
        }

我最終這樣做了,但是如果您看到改進的空間,請告訴我:

    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);
                }
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM