간단한 기능을 가진 VB.NET 2010에서 프로그램을 만들려고합니다. 텍스트 파일에 저장된 수천 개의 MD5 해시를 파일을 여는 동안 프로그램이 자동으로 계산하는 MD5 해시 파일과 비교해야합니다. 바이러스 백신 스캐너와 같습니다. 사실 내 프로그램은 텍스트 파일에서 모든 해시를 텍스트 상자에 추가 한 다음 비교합니다. ReadAllText
시스템을 사용합니다.VB.NET MD5 큰 파일을 사용하여 비교
Md5 데이터베이스 (해시가있는 텍스트 파일)는 작지만 파일이 커지면 내 프로그램이 열리기 만하기 때문에 ReadAllText
대신 ReadLine
을 사용하기로 결정했습니다.
이제 텍스트 상자를 사용할 수 없으므로 비교할 수있는 방법을 알려주십시오. 방법을 시도했지만 작동하지 않는 것 같습니다.
여기 내 코드는 ReadLine
입니다.
문제 If Read contains(buff.tostring)
에 그것이 textbox.text은 (buff.toString)이 포함되어있는 경우
여기서 I는 제 기능을 분할하는 기능을 만드는 것이 코드
Try
TextBox2.Text = e.FullPath
ListBox3.Items.Add(TextBox2.Text.ToString)
Me.OpenFileDialog1.FileName = ""
Dim reader As StreamReader = New StreamReader("def.txt")
Dim read = reader.ReadLine()
Dim md5 As New MD5CryptoServiceProvider
Dim f As New FileStream(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.Read, &H2000)
f = New FileStream(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.Read, &H2000)
md5.ComputeHash(f)
Dim hash As Byte() = md5.Hash
Dim buff As New StringBuilder
Dim hashByte As Byte
For Each hashByte In hash
buff.Append(String.Format("{0:X2}", hashByte))
Next
f.Close()
If read.Contains(buff.ToString) Then
Me.OpenFileDialog1.FileName = e.FullPath
Form2.ShowDialog()
End If
Catch exception1 As Exception
ProjectData.SetProjectError(exception1)
Dim ex As Exception = exception1
ProjectData.ClearProjectError()
End Try
List (of String)를 사용하여 해시 목록을 저장합니다. 또는 File.ReadLines를 배열로 가져 와서 거기에서 사용하십시오. – Plutonix
어떻게? 더 노골적으로 말하십시오. 파일이 매우 크다 (20 MB) – KingOfBSOD
내 코드를 수정하여 답변으로 올릴 수 있다면 괜찮겠습니까. 그렇게한다면 내 질문에 대한 대답으로 표시하고 싶습니다. 감사! – KingOfBSOD