Я пытаюсь создать программу в VB.NET 2010, которая имеет простую функциональность. Он должен сравнивать тысячи MD5 хэшей, хранящихся в текстовом файле, в текущем файле MD5 Hash, который автоматически вычисляется при открытии файла. Как антивирусный сканер. На самом деле моя программа использует систему ReadAllText
, чтобы добавить все хэши из текстового файла в текстовое поле, а затем сравнить их.VB.NET MD5 Сравнение с использованием больших файлов
В любом случае, когда база данных Md5 (этот текстовый файл с хэшами) мала, но когда файл становится больше, моя программа просто зависает после открытия, поэтому я решил использовать ReadLine
вместо ReadAllText
.
Теперь я больше не могу использовать текстовое поле, поэтому дайте мне способ, как я могу их сравнить. Я пробовал путь, но он, похоже, не работает.
Вот мой код, используя ReadLine
.
Проблема на If Read contains(buff.tostring)
он будет использоваться Если TextBox.Text содержит (buff.toString)
Вот код
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
Используйте список (из строки) для хранения списка хеш-листов. или использовать File.ReadLines, получить их как массив и использовать его оттуда – Plutonix
Как? Будьте более ясны. Файл очень БОЛЬШОЙ (20 МБ) – KingOfBSOD
Было бы хорошо, если бы вы могли изменить мой код и опубликовать его в качестве ответа. Я хотел бы отметить это как ответ на мой вопрос, если вы это сделаете. Благодаря! – KingOfBSOD