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.hqwc.cn/news/311196.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Go处理HTTP GET请求

你是否曾经想过&#xff0c;当你点击一个链接或在浏览器中输入一个网址时&#xff0c;背后发生了什么&#xff1f;其实&#xff0c;这是一个小小的数据冒险之旅。而今天&#xff0c;我们将使用Go语言作为我们的冒险伙伴&#xff0c;一起去探索如何处理HTTP GET请求的神秘世界&a…

2023年度总结—你是你的年度MVP吗?

这段年度总结其实我之前就想写了&#xff0c;大概就是市赛比完之后18号的样子把&#xff0c;但是因为太懒了就一直拖到了现在哈哈&#xff0c;我思来想去&#xff0c;翻来覆去&#xff0c;彻夜难眠&#xff0c;想了想&#xff0c;还是决定把它写了吧&#xff01;毕竟&#xff0…

「微服务」微服务架构中的数据一致性

在微服务中&#xff0c;一个逻辑上原子操作可以经常跨越多个微服务。即使是单片系统也可能使用多个数据库或消息传递解决方案。使用多个独立的数据存储解决方案&#xff0c;如果其中一个分布式流程参与者出现故障&#xff0c;我们就会面临数据不一致的风险 - 例如在未下订单的情…

2024 GMF|The Sandbox 为创作者赋能的新时代

以新的 GMF 模型和专门的参与池奖励来开启 2024 年吧。 11 月 3 日&#xff0c;我们在香港全球创作者日上宣布&#xff0c;The Sandbox 已为所有创作者分配了100,000,000 SAND&#xff0c;将通过 GMF 进行分发。作为首次启动的建设者挑战&#xff0c;我们准备了专门的 SAND 参与…

2023 全球 AI 大事件盘点

本文来自微信公众号硅星人

美团到店终端从标准化到数字化的演进之路

总第580篇 | 2023年第032篇 本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》。前端团队在产研多角色协同形式上存在不同阶段&#xff0c;而大前端多技术栈在各阶段都有其独特的实践&#xff0c;同时又有类似的演进路线。本文从到店终端团队移动端和前端技术栈持…

vue3引入百度地图(两种方法)

首先要有百度开放平台并进行注册&#xff0c;不懂看这里 ### 第一种方法 地图引入流程 安装vue-baidu-map-3x插件 参考官网地址&#xff1a;快速上手 | vue-baidu-map-3x npm install vue-baidu-map-3x --save 在public/index.html文件中引入 <!-- 百度地图 --> &…

DHCP学习记录

目录 客户端向DHCP服务端申请租用IP的4个阶段: 客户端向HDCP服务器续租IP过程: 客户端重新连接租用IP过程: 客户端释放IP 声明: (Dynamic Host Configuration Protocol)动态主机配置协议&#xff0c;客户端向DHCP服务端申请获得ip的一种约定俗成的话语(协议) 手工配置方式…

Spring Boot笔记1

1. SpringBoot简介 1.1. 原有Spring优缺点分析 1.1.1. Spring的优点分析 Spring是Java企业版&#xff08;Java Enterprise Edition&#xff0c;javeEE&#xff09;的轻量级代替品。无需开发重量级的Enterprise JavaBean&#xff08;EJB&#xff09;&#xff0c;Spring为企业…

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

Kafka_01_Kafka初识

Kafka_01_Kafka初识 Kafka基础概念延迟任务 Kafka Kafka: ZooKeeper协调的分布式消息系统 基于Scala语言编写的高性能、多分区、多副本Kafka高性能的原因&#xff1a;页缓存、顺序IO、零拷贝 具有以下特性&#xff1a; 消息中间件: 系统解耦、冗余存储、流量消峰、异步通信…