C# 如何判斷兩個文件內(nèi)容是否相同的方法
更新時間:2013年05月01日 14:24:42 作者:
使用System.security.Cryptography.HashAlgorithm類為每個文件生成一個哈希碼,然后比較兩個哈希碼是否相同
該哈希算法為一個文件生成一個小的二進(jìn)制“指紋”,從統(tǒng)計學(xué)的角度來看,不同的文件不可能生成相同的哈希碼
要生成一個哈希碼,必須首先創(chuàng)建一個HashAlgorithm對象,通過HashAlgorithm.Create方法來完成。然后調(diào)用
HashAlgorithm.ComputeHash方法,它會返回一個存儲哈希碼的字節(jié)數(shù)組,再使用BitConverter.Tostring()將其
裝換為字符串進(jìn)行比較。
源碼如下:
復(fù)制代碼 代碼如下:
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ù)
復(fù)制代碼 代碼如下:
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)文章
Treeview動態(tài)添加用戶控件傳值和取值的實例代碼
今天做了很好玩的樹,是treeview與用戶控件之間進(jìn)行交互先看效果:2013-04-04
C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法
這篇文章主要介紹了C#簡單查詢SQLite數(shù)據(jù)庫是否存在數(shù)據(jù)的方法,涉及C#調(diào)用SQLite組件及針對SQLite數(shù)據(jù)庫基本的連接、查詢、關(guān)閉等使用技巧,需要的朋友可以參考下2016-07-07

