zoukankan      html  css  js  c++  java
  • c#文件比较Code

      我想我们很多时候想比较一个文件里面是否有改动,比如一个dll库是新加了一个方法或修改了其中的方法实现,不能通过可视化的工具来比较的时候,可以用这个小工具来比较, 以下是比较文件的代码。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace FilesCompare
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Please type the first file.");
                string firstFilePath = Console.ReadLine();
    
                Console.WriteLine("Please type the second file.");
                string secondFilePath = Console.ReadLine();
    
                bool isEqual = CompareFiles(firstFilePath, secondFilePath);
                Console.WriteLine(isEqual ? "equal" : " Not equal");
    
                Console.Read();
            }
    
            public static bool CompareFiles(string targetFile, string updatedFile)
            {
                FileInfo targetFileInfo = new FileInfo(targetFile);
                FileInfo updatedFileInfo = new FileInfo(updatedFile);
    
                if (targetFileInfo.Length != updatedFileInfo.Length)
                {
                    return false;
                }
    
                using (FileStream targetStream = File.OpenRead(targetFile))
                {
                    using (FileStream updatedStream = File.OpenRead(updatedFile))
                    {
                        if (targetStream.Length != updatedStream.Length)
                        {
                            return false;
                        }
    
                        // Using a larger buffer than the default buffer of 4 * 1024 used by FileStream.ReadByte improves performance.
                        // The buffer size is based on user feedback. Based on performance results, a better buffer size may be determined.
                        byte[] targetBuffer = new byte[16 * 1024];
                        byte[] updatedBuffer = new byte[16 * 1024];
                        int targetReadLength;
                        int updatedReadLength;
                        do
                        {
                            targetReadLength = targetStream.Read(targetBuffer, 0, targetBuffer.Length);
                            updatedReadLength = updatedStream.Read(updatedBuffer, 0, updatedBuffer.Length);
    
                            if (targetReadLength != updatedReadLength)
                            {
                                return false;
                            }
    
                            for (int i = 0; i < targetReadLength; ++i)
                            {
                                if (targetBuffer[i] != updatedBuffer[i])
                                {
                                    return false;
                                }
                            }
    
                        } while (0 < targetReadLength);
                    }
                }
    
                return true;
            }
    
        }
    }
  • 相关阅读:
    Hibernate持久化对象修改id重新保存的办法
    hibernate实现数据实体复制保存
    MySQL 语句中执行优先级——and比or高
    Unity3D研究院之静态自动检查代码缺陷与隐患
    MVC模式在游戏开发的应用
    Unity3D的LightProbe动态光探头用法介绍
    高达渐出现效果Shader
    Unity3D战争迷雾效果
    从3D Studio Max导入物体 Importing Objects From 3D Studio Max
    从maya导入物体 Importing Objects From Maya
  • 原文地址:https://www.cnblogs.com/cang/p/4145239.html
Copyright © 2011-2022 走看看