C# 如何判斷兩個文件內(nèi)容是否相同的方法
該哈希算法為一個文件生成一個小的二進(jìn)制“指紋”,從統(tǒng)計學(xué)的角度來看,不同的文件不可能生成相同的哈希碼
要生成一個哈希碼,必須首先創(chuàng)建一個HashAlgorithm對象,通過HashAlgorithm.Create方法來完成。然后調(diào)用
HashAlgorithm.ComputeHash方法,它會返回一個存儲哈希碼的字節(jié)數(shù)組,再使用BitConverter.Tostring()將其
裝換為字符串進(jìn)行比較。
源碼如下:
public static bool isValidFileContent(string filePath1, string filePath2)
{
//創(chuàng)建一個哈希算法對象
using (HashAlgorithm hash = HashAlgorithm.Create())
{
using (FileStream file1 = new FileStream(filePath1, FileMode.Open),file2=new FileStream(filePath2,FileMode.Open))
{
byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根據(jù)文本得到哈希碼的字節(jié)數(shù)組
byte[] hashByte2 = hash.ComputeHash(file2);
string str1 = BitConverter.ToString(hashByte1);//將字節(jié)數(shù)組裝換為字符串
string str2 = BitConverter.ToString(hashByte2);
return (str1==str2);//比較哈希碼
}
}
}
使用該函數(shù)的主函數(shù)
static void Main(string[] args)
{
string filePath1 = @"f:/1.txt";
string filePath2 = @"f:/2.txt";
bool valid=isValidFileContent(filePath1, filePath2);
Console.WriteLine(valid.ToString());
Console.ReadKey();
}
相關(guān)文章
C# Socket編程實現(xiàn)簡單的局域網(wǎng)聊天器的示例代碼
這篇文章主要介紹了C# Socket編程實現(xiàn)簡單的局域網(wǎng)聊天器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程
這篇文章主要介紹了C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程,LINQ to SQL被集成在.NET框架之中,需要的朋友可以參考下2016-03-03