首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實作逐位元組比較兩個檔案內容是否相同

     編輯:關於C語言

本範例示範如何編寫一個函式,逐位元組比較兩個檔案內容,直到發現不相符或到達檔案尾端。為提升效率,先執行兩項簡單檢查:

  • 若兩個檔案參考指向同一檔案,則直接判定相同,無需進一步比較。
  • 若兩個檔案大小不同,則直接判定內容不同,無需進一步比較。

執行畫面

檔案比較程式執行畫面

圖 1-34 為 CH1_DemoForm044.cs 執行畫面,示範呼叫 FileCompare 函式比較兩個檔案。

完整程式碼

private void btnGoToCompare_Click(object sender, EventArgs e)
{
    if (FileCompare(this.TextBox1.Text, this.TextBox2.Text))
    {
        MessageBox.Show("兩個檔案是相同的。");
    }
    else
    {
        MessageBox.Show("兩個檔案並不相同。");
    }
}

/// 
/// 比較兩個檔案內容是否完全相同
/// 
/// 第一個檔案路徑
/// 第二個檔案路徑
/// 相同傳回 true,否則 false
private bool FileCompare(string file1, string file2)
{
    // 判斷是否為同一檔案參考
    if (file1 == file2) return true;

    int file1byte = 0, file2byte = 0;
    using (FileStream fs1 = new FileStream(file1, FileMode.Open),
                      fs2 = new FileStream(file2, FileMode.Open))
    {
        // 檢查檔案大小
        if (fs1.Length != fs2.Length)
        {
            return false;
        }

        // 逐位元組比較
        do
        {
            file1byte = fs1.ReadByte();
            file2byte = fs2.ReadByte();
        } while ((file1byte == file2byte) && (file1byte != -1));
    }

    // 只有完全相同才會相等
    return (file1byte - file2byte) == 0;
}

此實作使用 FileStream.ReadByte 逐一讀取位元組,配合 using 確保串流正確關閉,適合中小型檔案比對。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved