使用C#检查重复文件
比较文件的MD5
public Form1()
{
InitializeComponent();
}
private string path = "";
private Dictionary<string, string> dic = new Dictionary<string, string>();
private void Form1_Load(object sender, EventArgs e)
{
path = ConfigurationManager.AppSettings["musicpath"];
}
private void button1_Click(object sender, EventArgs e)
{
dic.Clear();
listBox1.Items.Clear();
label1.Text = "*";
var files = Directory.GetFiles(path);
int i = 0;
foreach (var file in files)
{
var md5 = GenerateMd5(file);
if (string.IsNullOrWhiteSpace(md5)) continue;
if (!dic.ContainsKey(md5))
{
dic.Add(md5, "");
}
else
{
dic.Add(Guid.NewGuid().ToString(), file);
i++;
}
}
foreach (var item in dic)
{
if (!string.IsNullOrEmpty(item.Value))
listBox1.Items.Add(item.Value);
}
label1.Text = $"总共 {files.Length} 首, 以下{i} 首是重复的歌曲。";
}
private string GenerateMd5(string filepath)
{
var md5hash = "";
try
{
using (var fileStream = File.OpenRead(filepath))
{
using (var md5 = MD5.Create())
{
md5hash = md5.ComputeHash(fileStream).Aggregate(string.Empty, (a, b) => a = a + b.ToString("X2"));
}
}
}
catch { }
return md5hash;
}
//选中右键删除后加