2017-02-02 89 views
1

我試着創建一個簡單的小應用程序,通過比較兩個或多或少類似文件夾中的文件並告訴我哪些文件不同,可以更容易地爲我的主項目創建更新文件。MD5 Comparison not working

C:\用戶\有\桌面\文件夾2 \ 1.txt的

C:但它測試兩個完全相似的文件夾時,總是給我下面的輸出\用戶\有\桌面\文件夾2 \ 2.txt

我的代碼:

private void FirstFolderBtn_Click(object sender, EventArgs e) 
    { 
     using (var fbd = new FolderBrowserDialog()) 
     { 
      DialogResult result = fbd.ShowDialog(); 

      if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) 
      { 
       FirstFolderTB.Text = fbd.SelectedPath; 
      } 
     } 
    } 

    private void SecondFolderButton_Click(object sender, EventArgs e) 
    { 
     using (var fbd = new FolderBrowserDialog()) 
     { 
      DialogResult result = fbd.ShowDialog(); 

      if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) 
      { 
       SecondFolderTB.Text = fbd.SelectedPath; 
      } 
     } 
    } 

    private void CompareBtn_Click(object sender, EventArgs e) 
    { 
     foreach(string file in Directory.GetFiles(FirstFolderTB.Text)) 
     { 
      byte[] storedFileHash; 
      using (var md5 = MD5.Create()) 
      { 
       using (var stream = File.OpenRead(file)) 
       { 
        storedFileHash = md5.ComputeHash(stream); 
       } 

       using (var stream = File.OpenRead(file.Replace(FirstFolderTB.Text, SecondFolderTB.Text))) 
       { 
        if(storedFileHash != md5.ComputeHash(stream)) 
        { 
         ResultTB.AppendText(file.Replace(FirstFolderTB.Text, SecondFolderTB.Text) + "\n"); 
        } 
       } 
      } 
     } 
    } 

我想我只是啞巴,現在和監督一些愚蠢的錯誤,但我會很感激,如果有人可以幫助。

謝謝,揚

+0

這是一個關於如何得到一個MD5哈希值的說明添加using System.Linq,我有一個問題這樣做。所以這不是在我的oppiion重複 – Jan1902

+0

完美 - 現在這是2個問題,完全覆蓋所有步驟的副本。 –

+0

這是錯的。我不知道我的問題是比較,所以我問問題可能是什麼。如果我知道這是我所看過的比較。 – Jan1902

回答

0

你個字節的比較是錯誤的

storedFileHash != md5.ComputeHash(stream)

這會不會比較引用字節。

使用SequenceEqual

if (storedFileHash.SequenceEqual(md5.ComputeHash(stream)) == false) { 
    ResultTB.AppendText(file.Replace(FirstFolderTB.Text, SecondFolderTB.Text) + "\n"); 
} 

如果缺少使用區間

+0

非常感謝!這解決了我的問題。這個錯誤並沒有我想象的那麼愚蠢:P – Jan1902