formgzip.vb

来自「应用VB.net开发」· VB 代码 · 共 117 行

VB
117
字号

Imports System
Imports System.IO
Imports System.IO.Compression

Public Class FormGZip

    Private intFileLength As Integer = 3600

    Private Sub btnDFile_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnDFile.Click
        If FBDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
            txtPath.Text = FBDialog.SelectedPath
        End If
    End Sub

    Private Sub btnSFile_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnSFile.Click
        If OFDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
            txtFile.Text = OFDialog.FileName
        End If
    End Sub

    Private Sub btnCom_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnCom.Click
        Me.doCompress(txtFile.Text)
    End Sub

    Private Sub btnDCom_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles btnDCom.Click
        Me.doDeCompress(txtFile.Text)
    End Sub


    Private Sub doCompress(ByVal filePath As String)

        Dim myFileStrweam As FileStream
        Dim myMemoryStream As New MemoryStream
        Dim myComFileStream As FileStream
        Dim myGZipStream As GZipStream
        Dim fileLength As Integer

        Try
            myFileStrweam = New FileStream( _
                    filePath, FileMode.Open, FileAccess.Read, FileShare.Read)
            fileLength = myFileStrweam.Length
            Dim bufferdata(fileLength - 1) As Byte

            myFileStrweam.Read(bufferdata, 0, fileLength)
            myFileStrweam.Close()

            myGZipStream = New _
                GZipStream(myMemoryStream, CompressionMode.Compress, True)
            myGZipStream.Write(bufferdata, 0, fileLength)
            myGZipStream.Close()

            Dim myComBufferdata(myMemoryStream.Length - 1) As Byte
            myMemoryStream.Position = 0
            myMemoryStream.Read(myComBufferdata, 0, myMemoryStream.Length)

            myComFileStream = New _
                 FileStream(txtPath.Text, FileMode.Create, FileAccess.Write)
            myComFileStream.Write(myComBufferdata, 0, myComBufferdata.Length)
            myComFileStream.Close()

            MessageBox.Show("数据压缩完成 !!")
            intFileLength = fileLength
            txtfl.Text = fileLength
            comfl.Text = myMemoryStream.Length

        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        End Try

    End Sub

    Private Sub doDeCompress(ByVal filePath As String)

        Dim myFileStream As FileStream
        Dim myDeComFileStream As FileStream
        Dim myGZipStream As GZipStream

        Dim sfileLength As Integer
        Dim fileLength As Integer

        Try
            myFileStream = New FileStream( _
                    filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
            myDeComFileStream = New FileStream( _
                    txtPath.Text, FileMode.Create, FileAccess.ReadWrite)

            sfileLength = myFileStream.Length

            myGZipStream = New GZipStream(myFileStream, CompressionMode.Decompress)
            Dim myBuffer(intFileLength) As Byte
            fileLength = myGZipStream.Read(myBuffer, 0, intFileLength)
            myDeComFileStream.Write(myBuffer, 0, myBuffer.Length)

            myFileStream.Close()
            myDeComFileStream.Close()
            myGZipStream.Close()

            MessageBox.Show("数据解压缩完成 !!")
            MessageBox.Show(System.Text.Encoding.UTF8.GetString(myBuffer))

            txtfl.Text = sfileLength
            comfl.Text = fileLength

        Catch ex As Exception
            MessageBox.Show(ex.ToString())

        End Try

    End Sub

End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?