Um zu prüfen, ob zwei Dateien identisch sind, sollte man folgendermassen vorgehen:
Die Funktion FileCompare erledigt genau diese Aufgabe für Sie. Das notwendige Vergleichen der Datei-Inhalte erfolgt über die jeweiligen Hash-Werte. Rückgabewert der Funktion: 0 - Identical Imports System.IO Imports System.Security.Cryptography Private Enum FileCompareStatus Identical = 0 ' identisch SizeDifferent = 1 ' Dateigröße verschieden ContentDifferent = 2 ' Inhalt verschieden [Error] = 3 ' Fehler End Enum ' zwei Dateien miteinander vergleichen Private Function FileCompare(ByVal sFile1 As String, _ ByVal sFile2 As String) As FileCompareStatus ' Prüfen, ob beide Dateien auch existieren If File.Exists(sFile1) AndAlso File.Exists(sFile2) Then Try ' zunächst Dateigröße vergleichen If New FileInfo(sFile1).Length <> New FileInfo(sFile2).Length Then Return FileCompareStatus.SizeDifferent Else ' jetzt Hash-Wert berechnen und vergleichen Dim oHash As HashAlgorithm = HashAlgorithm.Create Dim oStream As FileStream ' Hash-Wert für 1. Datei ermitteln oStream = New FileStream(sFile1, FileMode.Open) Dim bHash1() As Byte = oHash.ComputeHash(oStream) oStream.Close() ' Hash-Wert für 2. Datei ermitteln oStream = New FileStream(sFile2, FileMode.Open) Dim bHash2() As Byte = oHash.ComputeHash(oStream) oStream.Close() ' jetzt die beiden Hash Byte-Arrays miteinander vergleichen If BitConverter.ToString(bHash1) = BitConverter.ToString(bHash2) Then ' Datei-Inhalt ist identisch Return FileCompareStatus.Identical Else ' Datei-Inhalt unterscheidet sich Return FileCompareStatus.ContentDifferent End If End If Catch ex As Exception ' Fehler Return FileCompareStatus.Error End Try Else Return FileCompareStatus.Error End If End Function Um die neue Funktion gleich auszuprobieren, erstellen Sie ein neues Projekt und plazieren auf die Form einen CommandButton (Button1) und ein Label-Control (lblStatus) und fügen obigen Code in den Codeteil der Form ein. Beim Klicken auf den CommandButton wird folgender Code ausgeführt: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Hier die beiden Dateien festlegen Dim sFile1 As String = "c:\temp\datei1.ext" Dim sFile2 As String = "c:\temp\datei2.ext" Select Case FileCompare(sFile1, sFile2) Case FileCompareStatus.Identical lblStatus.Text = "Die Dateien sind identisch!" Case FileCompareStatus.SizeDifferent lblStatus.Text = "Die Dateien haben unterschiedliche Dateigrößen!" Case FileCompareStatus.ContentDifferent lblStatus.Text = "Die Dateien haben unterschiedlichen Inhalt!" Case FileCompareStatus.Error lblStatus.Text = "Fehler beim Dateivergleich!" End Select End Sub Dieser Tipp wurde bereits 22.657 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |