控制台应用,启动后粘贴要处理的文件夹路径。获取文件夹内所有文件的列表,逐一进行MD5计算,没有记录的保存,发现MD5重复的时候删除此文件。
c#
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace MD5删除
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("粘贴目标路径");
string pathinput = Console.ReadLine();
if (!Directory.Exists(pathinput + "\\output"))
{
Directory.CreateDirectory(pathinput + "\\output");
}
string[] filenames = Directory.GetFiles(pathinput);
Dictionary<string, string> md5list =new Dictionary<string, string>();
foreach (string filename in filenames)
{
string MD5code = GET_File_MD5(filename);
if (md5list.ContainsKey(MD5code))
{
File.Delete(filename);
Console.WriteLine("删除"+ filename);
}
else
{
md5list.Add(MD5code, filename);
Console.WriteLine("记录" + filename);
}
}
}
static private string GET_File_MD5(string path)
{
try
{
byte[] buffer = File.ReadAllBytes(path); ;
System.Security.Cryptography.MD5 file1_md5 = MD5.Create();
byte[] retval = file1_md5.ComputeHash(buffer);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retval.Length; i++)
{
sb.Append(retval[i].ToString("X2"));
}
return sb.ToString();
}
catch (Exception ep)
{
Console.WriteLine(ep.Message);
return "";
}
}
}
}
本文作者:Kellermen
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!