C# 如何判断两个文件内容是否相同的方法

yizhihongxing

要判断两个文件的内容是否相同,可以通过计算两个文件的哈希值(hash)来进行比较。哈希值是数据的固定长度的数字表示,可以用于判断数据是否一致。

C#中,可以使用System.Security.Cryptography命名空间中的MD5或SHA256等哈希算法计算文件的哈希值,并进行比较。

下面是一个使用MD5算法计算文件哈希值的示例代码:

using System;
using System.IO;
using System.Security.Cryptography;

class Program
{
    static void Main(string[] args)
    {
        string file1 = "file1.txt";
        string file2 = "file2.txt";

        if (FileHash(file1) == FileHash(file2))
        {
            Console.WriteLine("两个文件的内容相同");
        }
        else
        {
            Console.WriteLine("两个文件的内容不同");
        }
    }

    static byte[] ComputeHash(string fileName)
    {
        using (var stream = new BufferedStream(File.OpenRead(fileName), 100000))
        {
            var sha = MD5.Create();
            return sha.ComputeHash(stream);
        }
    }

    static string ByteArrayToString(byte[] array)
    {
        return BitConverter.ToString(array).Replace("-", "").ToLower();
    }

    static string FileHash(string fileName)
    {
        return ByteArrayToString(ComputeHash(fileName));
    }
}

在上面的代码中,FileHash方法使用ComputeHash方法获取文件的哈希值,并将其转换成字符串作为返回值。ComputeHash方法使用MD5.Create方法创建一个MD5哈希算法对象,再利用该对象的ComputeHash方法计算文件的哈希值。

在具体调用时,只需要传入要比较的两个文件的路径,然后对比它们的哈希值即可。

另外一个示例是使用SHA256算法计算哈希值的方法:

using System;
using System.IO;
using System.Security.Cryptography;

class Program
{
    static void Main(string[] args)
    {
        string file1 = "file1.txt";
        string file2 = "file2.txt";

        if (FileHash(file1, HashAlgorithmName.SHA256) == FileHash(file2, HashAlgorithmName.SHA256))
        {
            Console.WriteLine("两个文件的内容相同");
        }
        else
        {
            Console.WriteLine("两个文件的内容不同");
        }
    }

    static byte[] ComputeHash(string fileName, HashAlgorithmName algorithmName)
    {
        using (var stream = new BufferedStream(File.OpenRead(fileName), 100000))
        {
            var hashAlgorithm = HashAlgorithm.Create(algorithmName.Name);
            return hashAlgorithm.ComputeHash(stream);
        }
    }

    static string ByteArrayToString(byte[] array)
    {
        return BitConverter.ToString(array).Replace("-", "").ToLower();
    }

    static string FileHash(string fileName, HashAlgorithmName algorithmName)
    {
        return ByteArrayToString(ComputeHash(fileName, algorithmName));
    }
}

该示例与前一个示例的区别在于使用了HashAlgorithmName.SHA256名称表示SHA256算法,并且在ComputeHash方法中使用了HashAlgorithm.Create创建了一个指定类型的哈希算法对象。

总的来说,以上两个示例演示了如何使用C#判断两个文件内容是否相同的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 如何判断两个文件内容是否相同的方法 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#实现套接字发送接收数据

    我会详细讲解“C#实现套接字发送接收数据”的完整攻略。 简介 在 C# 语言中,实现套接字(Socket)发送和接收数据比较简单,主要是通过 System.Net 命名空间中的 Socket 类完成,本文将通过示例演示如何使用 Socket 在 C# 中发送和接收数据。 准备工作 首先,要创建一个 C# 控制台应用程序,然后在解决方案资源管理器中,右键单击项…

    C# 2023年5月31日
    00
  • WPF+SkiaSharp实现自绘拖曳小球

    WPF 是一种跨平台、络人机交互(HCI)的技术,而 SkiaSharp 是一种用于高效地进行 2D 图形渲染的跨平台、高性能的图形库。这两者的结合可以实现一些非常炫酷的效果,比如实现自绘拖曳小球。 本攻略将分为以下几个步骤: 创建 WPF 窗口; 在 WPF 窗口中引用 SkiaSharp 和 SkiaSharp.Views.Wpf,并在 XAML 中定义…

    C# 2023年6月6日
    00
  • C#操作图片读取和存储SQLserver实现代码

    为了操作图片读取和存储SQL Server,我们需要使用C#语言和SQL Server数据库。在这个过程中,我们将通过以下步骤实现: 读取图片文件 将图片文件转换为字节数组(byte数组) 将字节数组保存到SQL Server中 从SQL Server中读取字节数组 将字节数组转换回图片文件 下面是一个示例代码,在SQL Server中保存图片: // 定义…

    C# 2023年6月1日
    00
  • .NET C#创建WebService服务简单实例

    .NET C#创建WebService服务简单实例 WebService是一种基于Web的分布式应用程序,它使用标准的Internet协议来通信。在.NET C#中,我们可以使用ASP.NET Web服务来创建WebService服务。本文将提供详细的“.NET C#创建WebService服务简单实例”的完整攻略,包括如何创建WebService服务、如何…

    C# 2023年5月15日
    00
  • C# 多线程记录

    ​  开发中经常遇到不同的业务访问同一个数据源,而每一个业务的执行流就是一个线程,此时线程一多就会产生多线程最容易遇到的问题——并发。 什么是并发?         举个很经典的例子:程序中我们经常要操作一些对象,尤其是内存中的数据                    例如当前判断进入条件已经判断newModel不为空,sleep(10)称为比较耗时的运算…

    C# 2023年4月27日
    00
  • C#表达式目录树示例详解

    接下来我将为你详细讲解 C# 表达式目录树示例的完整攻略。 什么是C#表达式目录树? C# 表达式目录树是一个用于表示 C# 运行时代码语义的对象模型。它可以把 C# 代码解析为树型结构数据,这里的树指的是一种抽象的数据结构。在表达式目录树中,每个节点都代表着一个 C# 程序中的某个代码元素,比如方法调用、变量引用等。 表达式目录树的组成 C# 表达式目录树…

    C# 2023年5月31日
    00
  • 老生常谈.NET中的 COM 组件

    以下是“.NET中的COM组件”的完整攻略: 什么是COM组件 COM(Component Object Model)是一种微软开发的组件对象模型,用在Windows操作系统中创建可重用的二进制软件组件。COM组件可以使用多种编程语言编写,并且可以在不同进程和计算机之间进行通信。 .NET中的COM组件 在.NET中,我们可以使用COM组件来访问Window…

    C# 2023年5月12日
    00
  • .Net Core依赖注入IOC和DI介绍

    在 .NET Core 中,可以使用依赖注入(DI)和控制反转(IoC)来管理应用程序中的对象和依赖项。以下是 .NET Core 依赖注入和控制反转的完整攻略: 步骤一:配置依赖注入容器 在使用依赖注入功能前,需要配置依赖注入容器。可以在 ASP.NET Core 项目中的 Startup.cs 文件中配置依赖注入容器。以下是一个示例: public vo…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部