Zwei Dateien miteinander vergleichen Verfasst am: 17.04.2008, 10:30
Beschreibung: Diese Funktion vergleicht zwei Dateien miteinander über ihren MD5 Hash.
Funktion:
Code:
Private Function CompareFiles(ByVal ParamArray Files() As String) As Int32<br /><br /> Dim f(1) As System.IO.Stream<br /> Dim n As Integer<br /> Try<br /> For n = 0 To 1<br /> f(n) = System.IO.File.OpenRead(Files(n))<br /> Next<br /><br /> Dim csp As New _ <br />System.Security.Cryptography.MD5CryptoServiceProvider<br /> Dim FirstFile As Byte() = csp.ComputeHash(f(0))<br /> Dim SecondFile As Byte() = csp.ComputeHash(f(1))<br /> For n = 0 To 1<br /> f(n).Close()<br /> Next<br /> Dim bc1 As String = BitConverter.ToString(FirstFile)<br /> Dim bc2 As String = BitConverter.ToString(SecondFile)<br /> If bc1 = bc2 Then<br /> 'Beide Dateien sind gleich<br /> Return 1<br /> Else<br /> 'Es bestehen Unterschiede in den Dateien<br /> Return 0<br /> End If<br /> Catch ex As Exception<br /> MessageBox.Show(ex.Message, "Info")<br /> Return -1<br /> End Try<br /><br />End Function
Beispiel:
Code:
If CompareFiles("c:test.txt", "c:test.txt") = 0 Then<br /> MessageBox.Show("Die Dateien sind unterschiedlich!")<br />ElseIf CompareFiles("c:test.txt", "c:test.txt") = 1 Then<br /> MessageBox.Show("Die Dateien sind gleich!")<br />ElseIf CompareFiles("c:test.txt", "c:test.txt") = -1 Then<br /> MessageBox.Show("Es ist ein Fehler aufgetreten!")<br />End If
_________________
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 06.05.2008, 21:49
Ich hätte jetzt zwar auf nen boolschen Rückgabewert gesetzt, und die Schleifen weggelassen. Ist aber eigentlich egal, da man hier nicht mehr viel rausholen kann.
tr4st Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 486
Verfasst am: 06.05.2008, 21:55
Nunja ob ich nun Boolean zurück gebe oder Int32 kommt im Prinzip auf das selbe heraus. _________________
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 06.05.2008, 22:02
Naja, allein vom Speicherverbrauch wäre Boolean idealer, aber da die meisten Rechner sowieso 32Bit CPUs haben, macht Integer sogar mehr Sinn. Muss man sich ja auch erst bei einigen Aufrufen mehr Gedanken machen