All pastes #114079 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-08-03 22:06 UTC
rendered paste body
Public Sub CompressFile(ByVal strSourceFile() As String, ByVal strDestinationFile As String)
        '// Make sure all files exist before processing
        For intLoop As Integer = 0 To strSourceFile$.Length - 1
            If (Not File.Exists(strSourceFile$(intLoop))) Then
                Throw New FileNotFoundException
            End If
        Next

        '// Declare method variables
        Dim bytBuffer As Byte() = Nothing
        Dim fsSourceStream() As FileStream = Nothing
        Dim fsDestinationStream As FileStream = Nothing
        Dim gzipStream As GZipStream = Nothing

        Try
            '// Recreate source stream array
            ReDim fsSourceStream(strSourceFile$.Length - 1)

            '// Create destination and gzip streams
            fsDestinationStream = New FileStream(strDestinationFile$, FileMode.OpenOrCreate, FileAccess.Write)
            gzipStream = New GZipStream(fsDestinationStream, CompressionMode.Compress, True)

            '// Loop through sources and write buffer
            For intLoop As Integer = 0 To strSourceFile$.Length - 1
                fsSourceStream(intLoop) = New FileStream(strSourceFile$(intLoop), FileMode.Open, FileAccess.Read, FileShare.Read)
                bytBuffer = New Byte(CInt(fsSourceStream(intLoop).Length)) {}
                Dim intCheckCounter As Integer = fsSourceStream(intLoop).Read(bytBuffer, 0, bytBuffer.Length)
                gzipStream.Write(bytBuffer, 0, bytBuffer.Length)
            Next

        Catch ex As Exception
            '// An exception has occured
            MessageBox.Show("An exception has happened during compression." & vbCrLf & ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            '// Close all streams
            If (Not fsSourceStream Is Nothing) Then
                For intLoop As Integer = 0 To fsSourceStream.Length
                    fsSourceStream(intLoop).Close()
                Next
            End If
            If (Not gzipStream Is Nothing) Then
                gzipStream.Close()
            End If
            If (Not fsDestinationStream Is Nothing) Then
                fsDestinationStream.Close()
            End If
        End Try
    End Sub