VB.NET - Comparando Arquivos
E se você precisar comparar dois arquivos ? Qualquer tipo de arquivo : arquivos textos , binários , imagens , etc. ? Sabe como fazer isto em VB.NET ? Não sabe ? Bem , não sabia , vai ficar sabendo já , já ...
O código da função abaixo compara dois arquivos , de qualquer tipo , e retorna True se os arquivos forem idênticos e False se forem diferentes. Como é feita uma comparação de bytes podemos usar para qualquer arquivo.
Você deve também importar os seguintes namespaces :
Imports
System.IOImports
System.Security.Cryptography
Código da função ComparaArquivos.(Você pode inserir este código do formulário , em um módulo, em uma classe , conforme o seu interesse e sua necessidade)
Public
Function
ComparaArquivos(ByVal
nomeCaminhoCompletoArquivo1 As
String,
ByVal
nomeCaminhoCompletoArquivo2 As
String)
As
Boolean
Dim objMD5 As New MD5CryptoServiceProvider() Dim objEncoding As New System.Text.ASCIIEncoding() Dim aArquivo1() As Byte, aArquivo2() As Byte Dim strConteudo1, strConteudo2 As String Dim objReader As StreamReader Dim objFS As FileStream Dim bResposta As Boolean If Not File.Exists(nomeCaminhoCompletoArquivo1) Then Throw New Exception(nomeCaminhoCompletoArquivo1) If Not File.Exists(nomeCaminhoCompletoArquivo2) Then Throw New Exception(nomeCaminhoCompletoArquivo1) Try objFS = New FileStream(nomeCaminhoCompletoArquivo1, FileMode.Open)objReader = New StreamReader(objFS)aArquivo1 = objEncoding.GetBytes(objReader.ReadToEnd) strConteudo1 = objEncoding.GetString(objMD5.ComputeHash(aArquivo1)) objReader.Close() objFS.Close()
objFS = New FileStream(nomeCaminhoCompletoArquivo2, FileMode.Open)objReader = New StreamReader(objFS)aArquivo2 = objEncoding.GetBytes(objReader.ReadToEnd) strConteudo2 = objEncoding.GetString(objMD5.ComputeHash(aArquivo2))
bResposta = strConteudo1 = strConteudo2
objReader.Close() objFS.Close()
aArquivo1 = NothingaArquivo2 = NothingCatch ex As Exception Throw ex End Try Return bResposta End Function |
Para usar a função você pode criar um novo projeto no VS.NET do tipo Visual Basic modelo Windows Application e no formulário padrão inserir : duas caixas de texto (textbox1 e textbox2) , duas labels (label1 e label2) e um botão de comando - button1.
No evento Click do botão de comando você põe o código que faz a chamada da função passando como parâmetros os nomes completos e caminhos dos arquivos informados nas caixas de textos. O código pode ser assim:
Private
Sub
Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
Button1.Click
Try
If (ComparaArquivos(TextBox1.Text, TextBox2.Text)) Then MsgBox("Os arquivos comparados são IGUAIS", MsgBoxStyle.Information, "Compara Arquivos") Else MsgBox("Os arquivos comparados são DIFERENTES", MsgBoxStyle.Information, "Compara Arquivos") End If Catch ex As Exception MsgBox("Arquivo não localizado", MsgBoxStyle.Critical, "ARQUIVO NÃO EXISTE") End Try End Sub |
Executando o projeto e comparando arquivos idênticos teremos:
Bom proveito e Até mais ...
José Carlos Macoratti