C# 中利用 CRC32 值判断文件是否重复

需要在 NuGet 中引用 Crc32.NET 包

直接贴代码了:

using Force.Crc32;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Crc32NETDemo.ConApp.Codes;

namespace Crc32NETDemo.ConApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string folderPath = @"D:\music\";
            Console.WriteLine(string.Format("正在分析路径 {0} 下的文件的 CRC32 值。", folderPath));
            IEnumerable<string> filePathList = Directory.EnumerateFiles(folderPath, "*", SearchOption.AllDirectories);
            Dictionary<string, uint> dic = new Dictionary<string, uint>();
            foreach (string filePath in filePathList)
            {
                byte[] zipdata = File.ReadAllBytes(filePath);
                uint crc = Crc32CAlgorithm.Compute(zipdata);
                dic.Add(filePath, crc);
            }

            Console.WriteLine("重复的文件如下:" + Environment.NewLine);
            IEnumerable<uint> doubledCrc32List = dic.Values.Iterative();
            if (doubledCrc32List.Any())
            {
                var tempList = dic.Where(c => doubledCrc32List.Contains(c.Value)).OrderBy(c => c.Value).ToList();
                foreach (var item in tempList)
                {
                    Console.WriteLine(string.Format("路径:{0}, CRC32 值:{1}", item.Key, item.Value));
                }
            }
            else
            {
                Console.WriteLine("没有找到重复的文件!");
            }
            Console.WriteLine();
            Console.ReadLine();
        }
    }
}

 

谢谢浏览!

转载于:https://www.cnblogs.com/Music/p/crc32-demo-in-dotnet.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值