''' <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