C# 图标标注小工具-查看重复文件
2023-12-27 09:48:33
目录
效果
项目
代码
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Windows.Forms;
namespace ImageDuplicate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string FolderPath = "";
List<ImgFileInfo> ltFile = new List<ImgFileInfo>();
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog(this) != DialogResult.OK)
{
return;
}
textBox1.Text = "";
FolderPath = "";
ltFile.Clear();
dataGridView1.DataSource = null;
Application.DoEvents();
button1.Enabled = false;
button2.Enabled = false;
FolderPath = dialog.SelectedPath + @"\";
textBox1.Text = FolderPath;
DirectoryInfo root = new DirectoryInfo(FolderPath);
foreach (FileInfo f in root.GetFiles())
{
ltFile.Add(new ImgFileInfo(f.Name, GetFileMD5(FolderPath + f.Name)));
}
//var sortlist = ltFile.OrderBy(o => o.md5).ToList();
var listGroup = ltFile.GroupBy(o => o.md5)
.Select(g => (new
{
md5 = g.Key,
num = g.Count(),
fileName = string.Join(",", g.Select(d => d.fileName))
}))
.OrderByDescending(o => o.num)
.ThenBy(o => o.md5)
.ToList();
dataGridView1.DataSource = listGroup;
//自适应所有列的宽度
//dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
dataGridView1.Columns[0].Width = 300;
dataGridView1.Columns[1].Width = 50;
dataGridView1.Columns[2].Width = 850;
button1.Enabled = true;
button2.Enabled = true;
}
public static string GetFileMD5(string path)
{
if (!System.IO.File.Exists(path)) return "";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
byte[] buffer = md5Provider.ComputeHash(fs);
string resule = BitConverter.ToString(buffer);
md5Provider.Clear();
fs.Close();
return resule;
}
/// <summary>
/// 去重复
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
}
}
}
下载
文章来源:https://blog.csdn.net/weixin_46771779/article/details/135236326
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!