''' <summary> ''' Compare le contenu de deux fichiers ''' </summary> ''' <param name="FichierA">Chemin du premier fichier à comparer</param> ''' <param name="FichierB">Chemin du second fichier à comparer</param> ''' <returns>Vrai si identique, sinon faux</returns> Public Function EstIdentique(ByVal FichierA As String, ByVal FichierB As String) As Boolean Const BufferSize As Integer = 8192 ' 8Ko Dim Retour As Boolean = True ' Verification existance fichiers If (Not File.Exists(FichierA)) Then Throw New IOException("Le fichier A n'existe pas !") End If If (Not File.Exists(FichierB)) Then Throw New IOException("Le fichier B n'existe pas !") End If ' Nos buffers de travail Dim bufferA(BufferSize) As Byte Dim bufferB(BufferSize) As Byte ' Ouverture du premier fichier A Dim fA As New FileStream(FichierA, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize) ' Ouverture du second fichier B Dim fB As New FileStream(FichierB, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize) Dim LuA As Integer = bufferA.Length Dim LuB As Integer = bufferB.Length Try Do ' Copie les 8 Ko suivant du flux dans les buffers LuA = fA.Read(bufferA, 0, bufferA.Length) LuB = fB.Read(bufferB, 0, bufferB.Length) ' On verifie que nous avons lu le meme nombre d'octet sur chaque flux If (LuA = LuB) Then ' Comparaison octet à octet For cpt As Integer = 0 To (bufferA.Length - 1) If (bufferA(cpt) <> bufferB(cpt)) Then Retour = False ' Les fichiers ne sont pas identiques Exit Do ' On sort, plus besoin de continuer End If Next Else Retour = False ' Les fichiers ne sont pas identiques Exit Do ' On sort, plus besoin de continuer End If ' On continu si on peut encore en lire Loop While (LuA > 0 And LuB > 0) Catch ex As Exception Throw New Exception("Erreur pendant l'execution de EstIdentique", ex) Finally ' Ferme fichier A If (Not fA Is Nothing) Then fA.Close() fA.Dispose() End If ' Ferme fichier B If (Not fB Is Nothing) Then fB.Close() fB.Dispose() End If End Try Return Retour End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.