Imports System.IO
Imports System.IO.Compression
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim lngRet As Long = CompressFile("C:\TEST\hogohoge.txt")
If (lngRet = 0) Then
MessageBox.Show("圧縮処理が失敗しました。")
Else
MessageBox.Show(lngRet.ToString & "バイトに圧縮しました。")
End If
End Sub
''' <summary>
''' GZipStreamを利用してファイルを圧縮して保存(gz)する
''' </summary>
''' <param name="filepathname">圧縮対象ファイルパス名</param>
''' <returns>圧縮後のファイルサイズ(byte)
''' 処理が失敗した場合は0</returns>
''' <remarks></remarks>
Private Function CompressFile(ByVal filepathname As String) As Long
Try
CompressFile = 0
''入力ファイル有無チェック
If (My.Computer.FileSystem.FileExists(filepathname) = False) Then
Return 0
End If
''ファイル内容を取得
Using inFile As New FileStream(filepathname, FileMode.Open, _
FileAccess.Read, FileShare.Read)
Dim inBuffer(Cint(inFile.Length - 1)) As Byte
Dim count As Integer = inFile.Read(inBuffer, 0, inBuffer.Length)
inFile.Close()
''ファイルを出力
Using outFile As New FileStream(filepathname & ".gz", _
FileMode.Create, FileAccess.Write)
Using compStream As New GZipStream(outFile, CompressionMode.Compress, True)
compStream.Write(inBuffer, 0, inBuffer.Length)
compStream.Close()
CompressFile = outFile.Length
outFile.Close()
End Using
End Using
End Using
Catch ex As Exception
Return 0
End Try
End Function
End Class
|