Imports System
Imports System.IO
Imports System.IO.Compression
Public Class CompressSample
Shared Sub Main(ByVal args As String())
Dim inFile As String = args(0)
' 出力ファイルの拡張子は「.gz」
Dim outFile As String = Path.GetFileName(inFile) + ".gz"
Dim num As Integer
Dim buf(1024) As Byte ' 1Kbytesずつ処理する
' 入力ストリーム
Dim inStream As New FileStream _
(inFile, FileMode.Open, FileAccess.Read)
' 出力ストリーム
Dim outStream As New FileStream _
(outFile, FileMode.Create)
' 圧縮ストリーム
Dim compStream As New GZipStream _
(outStream, CompressionMode.Compress)
Using inStream
Using outStream
Using compStream
Do
num = inStream.Read(buf, 0, buf.Length)
If num <= 0 Then Exit Do
compStream.Write(buf, 0, num)
Loop
End Using
End Using
End Using
End Sub
End Class
Imports System
Imports System.IO
Imports System.IO.Compression
Public Class DecompressSample
Shared Sub Main(ByVal args As String())
Dim inFile As String = args(0)
' 入力ファイルは.gzファイルのみ有効
If Not inFile.ToLower().EndsWith(".gz")
Return
End If
' ファイル名末尾の「.gz」を削除
Dim outFile As String = inFile.Substring(0, inFile.Length - 3)
Dim num As Integer
Dim buf(1024) As Byte ' 1Kbytesずつ処理する
' 入力ストリーム
Dim inStream As New FileStream _
(inFile, FileMode.Open, FileAccess.Read)
' 解凍ストリーム
Dim decompStream As New GZipStream _
(inStream, CompressionMode.Decompress)
' 出力ストリーム
Dim outStream As New FileStream _
(outFile, FileMode.Create)
Using inStream
Using outStream
Using decompStream
Do
num = decompStream.Read(buf, 0, buf.Length)
If num <= 0 Then Exit Do
outStream.Write(buf, 0, num)
Loop
End Using
End Using
End Using
End Sub
End Class