These samples whow how to compress and decompress files with the build in framework methods. For real world applications consider using something like .netzip from codeplex, since the compression quality from the build in methods is limited. Also, the build in methods will allow you to just compress and decompress a single file.
Compressing a file
Imports System.IO
Imports System.IO.Compression
Module packtool
''' <summary>
''' Example on using a deflatestream to compress a file into a target file
''' </summary>
''' <param name="args">args() will automagicaly hold the command line args
''' passed to the application</param>
''' <remarks>Error checking on the source and target files is left out to
''' keep the example to it's core. In a live deployment you should always
''' check to see if the source file is present and accessible and the target
''' file writable</remarks>
Sub Main(ByVal args() As String)
If args.Count <> 2 Then
Console.WriteLine("format: pack <source> <target>")
Return
End If
Dim sSource As String = args(0)
Dim sTarget As String = args(1)
Console.WriteLine("packing {0} to {1}", sSource, sTarget)
Dim oSourcefile As FileStream = File.OpenRead(sSource)
Dim oDestfile As FileStream = File.Create(sTarget)
Using oCompressed As New System.IO.Compression.DeflateStream(oDestfile, CompressionMode.Compress)
Dim dBuffer(8192) As Byte ' --- 8 KB data buffer
Dim nProcessed As Int64 = 0
Dim nRead As Integer = 0
Do
nRead = oSourcefile.Read(dBuffer, 0, 8192)
nProcessed += nRead
oCompressed.Write(dBuffer, 0, nRead)
Console.Write("{0} Kb processed{1}", Int(nProcessed / 1024), vbCr)
Loop Until nRead = 0
Console.WriteLine()
End Using
oDestfile.Close()
oSourcefile.Close()
End Sub
End Module
Decompressing a file
Imports System.IO
Imports System.IO.Compression
Module unpacktool
''' <summary>
''' Example on uncompressing a compressed file with the standard .net methods
''' </summary>
''' <param name="args">Command line arguments passed by the user</param>
''' <remarks>Error checking left out on the source and target file</remarks>
Sub Main(ByVal args() As String)
If args.Count <> 2 Then
Console.WriteLine("format: unpack <source> <target>")
Return
End If
Dim sSource As String = args(0)
Dim sTarget As String = args(1)
Console.Write("packing {0} to {1}", sSource, sTarget)
Dim oSourcefile As FileStream = File.OpenRead(sSource)
Dim oDestfile As FileStream = File.Create(sTarget)
Using oCompressed As New System.IO.Compression.DeflateStream(oSourcefile, CompressionMode.Decompress)
' --- We could use a larger buffer here like in the compression example, but there
' is no real performance gain to be made since the framework handles the buffering
' quite efficiently.
Dim dByte As Integer = oCompressed.ReadByte
While dByte <> -1
oDestfile.WriteByte(CType(dByte, Byte))
dByte = oCompressed.ReadByte()
End While
End Using
oDestfile.Close()
oSourcefile.Close()
End Sub
End Modul