当前位置: 首页 > news >正文

C# 图标标注小工具-查看重复文件

目录

效果

项目

代码

下载


效果

项目

代码

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){}}
}

下载

源码下载

http://www.lryc.cn/news/270411.html

相关文章:

  • 浅谈冯诺依曼体系和操作系统
  • Good Bye 2023
  • 多开工具对手机应用响应速度的优化与改进
  • 文件批量整理,文件归类整理,文件批量归类
  • Python+Django+Mysql+SimpleUI搭建后端用户管理系统(非常详细,每一步都清晰,列举了里面所有使用的方法属性)
  • 【Qt-QWidget-QLabel-QFrame-QSlider-View-Bar】
  • 11|代理(上):ReAct框架,推理与行动的协同
  • 毫秒格式化
  • pytorch与cuda版本对应关系汇总
  • Linux系统下隧道代理HTTP
  • unity学习笔记----游戏练习03
  • VistualStudio查看类图UML
  • elasticsearch系列九:异地容灾-CCR跨集群复制
  • 基于Java网上点餐系统设计与实现
  • 公司电脑文件加密系统——防止内部核心文件数据 | 资料外泄,自动智能透明加密保护
  • 计算机毕业设计------ssm茶叶溯源系统
  • 【网络安全 | Misc】miss_01 太湖杯
  • 【深度学习目标检测】十一、基于深度学习的电网绝缘子缺陷识别(python,目标检测,yolov8)
  • 《深入理解C++11:C++11新特性解析与应用》笔记六
  • C# 基于事件的观察者模式
  • ARM CCA机密计算软件架构之软件堆栈概述
  • 《Python机器学习原理与算法实现》学习笔记
  • k8s集群通过helm部署skywalking
  • 介绍一款PDF在线工具
  • docker学习——汇总版
  • 百度沧海文件存储CFS推出新一代Namespace架构
  • 16-网络安全框架及模型-BiBa完整性模型
  • ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文
  • 基于 Element UI 适用于 Vue 2 版本的虚拟列表选择器组件el-select
  • java常见面试题:请解释一下Java中的常用分布式框架,如Spring Boot、Dubbo等。