[英]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
一樣將其寫入同一個文本文件。
我如何使用在CalculateMD5
中CalculateMD5
出的 MD5 並將其寫入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();
}
}
}
我最終這樣做了,但是如果您看到改進的空間,請告訴我:
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.