using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace test
{
class Program
{
static FileStream fs;
static StreamWriter sw;
static void Main(string[] args)
{
DeleteFile("E:\\A.txt");
fs= new FileStream("E:\\A.txt",FileMode.Create);
sw= new StreamWriter(fs,Encoding.Default);
FindFoldersAndFiles(@"E:\Program Files");
sw.Close();
fs.Close();
}
//递归目标文件夹中的所有文件和文件夹
private static void FindFoldersAndFiles(string path)
{
//Console.WriteLine("文件夹" + path);
sw.WriteLine(path);
//遍历目标文件夹的所有文件
foreach (string fileName in Directory.GetFiles(path))
{
//Console.WriteLine("┣" + fileName);
sw.WriteLine(fileName + " " + GetMD5HashFromFile(fileName));
}
//遍历目标文件夹的所有文件夹
foreach (string directory in Directory.GetDirectories(path))
{
FindFoldersAndFiles(directory);
}
}
private static string GetMD5HashFromFile(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
private static bool DeleteFile(string path)
{
if (File.Exists(path))
{
//如果存在则删除
File.Delete(path);
return true;
}
return false;
}
}
}