科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用.NET 2.0压缩/解压功能处理大型数据

用.NET 2.0压缩/解压功能处理大型数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文正是想讨论何时以及如何使用这些有用的工具。

作者:朱先忠编译 来源:天极开发 2007年11月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
处理压缩事件

  现在,既然定义好了主要的压缩和解压例程,那么接下来你就可以为各种按钮进行编码了。相应于Compress按钮的事件处理器如下:

Private Sub btnCompress_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCompress.Click
'---用来存储压缩的数据---
 Dim compressedData() As Byte
 '---压缩数据---
 If rbGZipStream.Checked Then
  compressedData = Compress("Gzip",System.Text.Encoding.ASCII.GetBytes(txtBefore.Text))
 Else
  compressedData = Compress("Deflate",System.Text.Encoding.ASCII.GetBytes(txtBefore.Text))
 End If
 '---把压缩的数据复制到一个字符串中---
 Dim i As Integer
 Dim s As New System.Text.StringBuilder()
 For i = 0 To compressedData.Length - 1
  If i <> compressedData.Length - 1 Then
   s.Append(compressedData(i) & " ")
  Else
   s.Append(compressedData(i))
  End If
 Next
 '---显示压缩的数据为一个字符串---
 txtAfter.Text = s.ToString
End Sub

  在txtBefore控件中的数据被转换成一个字节数组,然后被压缩。然后,该压缩的数据被转换成字符串以便于在txtAfter中显示。

  相应于Decompress按钮的事件处理器如下:

Private Sub btnDecompress_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDecompress.Click
'---把压缩的字符串格式化成一个字节数组---
 Dim eachbyte() As String = txtAfter.Text.Split(" ")
 Dim data(eachbyte.Length - 1) As Byte
 For i As Integer = 0 To eachbyte.Length - 1
  data(i) = Convert.ToByte(eachbyte(i))
 Next
 '---解压数据并且显示解压的数据---
 If rbGZipStream.Checked Then
  txtBefore.Text = System.Text.Encoding.ASCII.GetString(Decompress("Gzip", data))
 Else
  txtBefore.Text = System.Text.Encoding.ASCII.GetString(Decompress("Deflate", data))
 End If
End Sub

  它把显示在控件txtAfter中的数据转换成一个字节数组,然后发送它以便进行解压。解压缩的数据被显示回txtBefore控件中。

  相应于"Select file to compress"按钮的事件处理器代码如下:

Private Sub btnSelectFile_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSelectFile.Click
'---让用户选择一个要压缩的文件--
 Dim openFileDialog1 As New OpenFileDialog()
 'openFileDialog1.InitialDirectory = "c:\"
 openFileDialog1.Filter = "All files (*.*)|*.*"
 openFileDialog1.RestoreDirectory = True
 If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
 '---把文件的内容读入字节数组---
 Dim fileContents As Byte()
 fileContents = My.Computer.FileSystem.ReadAllBytes(openFileDialog1.FileName)
 '---创建gzip文件---
 Dim filename As String = openFileDialog1.FileName & ".gzip"
 If File.Exists(filename) Then File.Delete(filename)
  Dim fs As FileStream = New FileStream(filename, FileMode.CreateNew, FileAccess.Write)
  '---压缩文件的内容---
  Dim compressed_Data As Byte()
  If rbGZipStream.Checked Then
   compressed_Data = Compress("Gzip", fileContents)
  Else
   compressed_Data = Compress("Deflate", fileContents)
  End If
  If compressed_Data IsNot Nothing Then
   '---把压缩的内容写进压缩的文件中---
   fs.Write(compressed_Data, 0, compressed_Data.Length)
   fs.Close()
  End If
 End If
End Sub

  它读取由用户选择的文件的内容,压缩它,并且创建一个包含压缩的数据的新文件(具有一样的文件名,但是加上了一个.gzip扩展名)。

  相应于"Select file to Decompress"按钮的事件处理器代码如下:

Private Sub btnDecompressFile_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDecompressFile.Click
 '---让用户选择一个要解压的文件---
 Dim openFileDialog1 As New OpenFileDialog()
 ' openFileDialog1.InitialDirectory = "c:\"
 openFileDialog1.Filter = "All GZIP files (*.gzip)|*.gzip"
 openFileDialog1.RestoreDirectory = True
 If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
 '---把压缩的文件的内容读入到字节数组---
 Dim fileContents As Byte()
 fileContents = My.Computer.FileSystem.ReadAllBytes(openFileDialog1.FileName)
 '---解压文件的内容---
 Dim uncompressed_Data As Byte()
 If rbGZipStream.Checked Then
  uncompressed_Data = Decompress("Gzip", fileContents)
 Else
  uncompressed_Data = Decompress("Deflat", fileContents)
 End If
 '---创建解压的文件---
 Dim filename As String = openFileDialog1.FileName.Substring(0, openFileDialog1.FileName.Length - 5)
 If File.Exists(filename) Then File.Delete(filename)
  Dim fs As FileStream = New FileStream(filename,FileMode.CreateNew, FileAccess.Write)
  If uncompressed_Data IsNot Nothing Then
   '---把解压内容写入到文件中---
   fs.Write(uncompressed_Data, 0, uncompressed_Data.Length)
   fs.Close()
  End If
 End If
End Sub

  它读取用户选择的文件的内容,解压之,并且创建一个包含解压的数据的新文件(通过去掉它的.gzip扩展名)。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章