2017-02-02 3 views
1

두 개 또는 그 이하의 유사한 폴더에있는 파일을 비교하고 어떤 파일이 다른지 알려주는 방식으로 내 기본 프로젝트의 업데이트 파일을보다 쉽게 ​​만들 수 있도록 간단한 응용 프로그램을 만들려고했습니다.MD5 비교가 작동하지 않습니다

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

using System.Linq를 추가 실종, 나는 문제가 그 일을해야합니다. 따라서 내 의견에 중복이되지 않습니다. – 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"); 
} 

MD5 해시를 얻는 방법에 대한 설명입니다 사용하여 섹션

+0

정말 고마워요! 그건 내 문제를 해결. 그리고 그 실수는 내가 예상했던 것처럼 바보가 아니었다 : P – Jan1902