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