• 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;
            }
        }
    }
  • 相关阅读:
    Solon 1.6.36 发布,更现代感的应用开发框架
    OrchardCore Headless建站拾遗
    阿里云IoT流转到postgresql数据库方案
    C#中检查null的语法糖
    [翻译] 使用 TensorFlow 进行分布式训练
    [源码解析] TensorFlow 分布式之 MirroredStrategy
    [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇
    [源码解析] TensorFlow 之 分布式变量
    WebSocket 协议详解
    golang常用库包:Go依赖注入(DI)工具wire使用
  • 原文地址:https://www.cnblogs.com/wzwyc/p/16329361.html
Copyright © 2020-2023  润新知