我刚刚开始使用以下代码在 VB.Net 中压缩文件。由于我的目标是 Fx 2.0,因此我无法使用该Stream.CopyTo
方法。
Normal
但是,与7-zip 中的 gzip 压缩配置文件相比,我的代码给出了极差的结果。例如,我的代码将一个 630MB 的 Outlook 存档压缩到 740MB,而 7-zip 压缩到 490MB。
这是代码。是否有明显的错误(或很多?)
Using Input As New IO.FileStream(SourceFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
Using outFile As IO.FileStream = IO.File.Create(DestFile)
Using Compress As IO.Compression.GZipStream = New IO.Compression.GZipStream(outFile, IO.Compression.CompressionMode.Compress)
'TODO: Figure out the right buffer size.'
Dim Buffer(524228) As Byte
Dim ReadBytes As Integer = 0
While True
ReadBytes = Input.Read(Buffer, 0, Buffer.Length)
If ReadBytes <= 0 Then Exit While
Compress.Write(Buffer, 0, ReadBytes)
End While
End Using
End Using
End Using
我尝试了多种缓冲区大小,但我得到了相似的压缩时间,以及完全相同的压缩比。