C#如何判断文件是否相同?
自己写了一个整理音乐文件的小工具。
加载文件的时候,需要判断是否为同一文件。前面的做法是,每次加载文件的时候都去检测文件的MD5。这种方式比较保险,但是造成的影响是加载的时候会比较慢,特别是文件比较多的时候。
其实大部分的时候,这些都是同样的文件,而且也没有变化。
所以想通过其它比较快捷的方式先判断是否为同一文件,然后再去判断有无必要重新检测MD5判断。
目前的判断逻辑是,如果文件的完整路径,文件大小,创建时间,修改时间都一致,那就认为是同一个文件。
个人认为这4种属性都一模一样,但是文件又不相同的情况,概念会非常小。
下面是我用到的数据类:
using Prism.Mvvm; using CgdataBase; using FreeSql.DataAnnotations; using System.IO; using System; namespace MusicManager.Models { [Table(Name = "mm_file_md5")] public class FileMd5Info : BindableBase, IBaseInfo { [Column(IsIdentity = true, IsPrimary = true)] public int ID { get; set; } [Column(IsIgnore = true)] public string FileName { get; set; } [Column(IsIgnore = true)] public string FullPath { get; set; } [Column(IsIgnore = true)] public long Length { get; private set; } [Column] public DateTime CreationTime { get; private set; } [Column] public DateTime LastWriteTime { get; private set; } [Column(IsNullable = false)] public string MD5 { get; set; } public FileMd5Info() { } public FileMd5Info(string filePath) { var info = new FileInfo(filePath); FullPath = info.FullName; Length = info.Length; CreationTime = info.CreationTime; LastWriteTime = info.LastWriteTime; } public bool IsDifferent(FileMd5Info info) { return info.FullPath != FullPath || info.Length != Length || info.CreationTime != CreationTime || info.LastWriteTime != LastWriteTime; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2017-05-31 正试图在 os 加载程序锁内执行托管代码