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;
            }
    
        }
    }
  • 相关阅读:
    VisualSVN-Server windows 版安装时报错 "Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details."
    Pytest 单元测试框架之初始化和清除环境
    Pytest 单元测试框架入门
    Python(email 邮件收发)
    Python(minidom 模块)
    Python(csv 模块)
    禅道简介
    2020年最好的WooCommerce主题
    Shopify网上开店教程(2020版)
    WooCommerce VS Magento 2020:哪个跨境电商自建站软件更好?
  • 原文地址:https://www.cnblogs.com/cang/p/4145239.html
Copyright © 2011-2022 走看看