Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4,VB5,VB6
Expertise: Intermediate
Nov 18, 2000

CompareFiles - Check whether two files contain the same data

' compare two files
' return True if they're equal

Function CompareFiles(ByVal file1 As String, ByVal file2 As String) As Boolean
    Dim fnum1 As Integer, isOpen1 As Boolean
    Dim fnum2 As Integer, isopen2 As Boolean
    Dim buffer1 As String, buffer2 As String
    Dim bytesLeft As Long
    
    ' size of the buffer - increase as needed
    Const BUFFERSIZE = 10240
    
    buffer1 = Space$(BUFFERSIZE)
    buffer2 = buffer1
    
    On Error GoTo ExitProc
    
    ' compare the lengths
    ' exit if not equal or if any error
    bytesLeft = FileLen(file1)
    If bytesLeft <> FileLen(file2) Then Exit Function
    
    ' open the first file
    fnum1 = FreeFile
    Open file1 For Binary As #fnum1
    isOpen1 = True
    
    ' open the second file
    fnum2 = FreeFile
    Open file2 For Binary As #fnum2
    isopen2 = True
    
    ' read the entire files in chunks
    
    Do While bytesLeft
        ' don't read more than the residual bytes
        If bytesLeft < Len(buffer1) Then
            buffer1 = Space$(bytesLeft)
            buffer2 = buffer1
        End If
    
        ' read a bunch of bytes from both files
        Get #fnum1, , buffer1
        Get #fnum2, , buffer2
        ' exit if files don't match
        If buffer1 <> buffer2 Then Exit Do
    
        ' evaluate how many bytes are left to read
        bytesLeft = bytesLeft - Len(buffer1)
    Loop
    
    ' if we get here because we read the entire
    ' files, then the two files are equal
    CompareFiles = (bytesLeft = 0)
    
    ' flow through the error handler routine
    ' to close files and exit
    
ExitProc:
    If isOpen1 Then Close #fnum1
    If isopen2 Then Close #fnum2
    ' raise the error in the client code
    If Err Then
        Err.Raise Err.Number, , Err.Description
    End If

End Function
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date