为什么压缩后文件反而变大了?

wmy2370_cn 2006-08-06 06:02:28
代码如下:
Public Function ZipTo(ByVal strSourceFileName As String, ByVal strZipFileName As String) As Boolean
'参数: strSourceFileName 要被压缩的文件
'参数: strZipFileName 要压缩的ZIP文件,如果要压缩多个文件时,将使用第一个ZIP文件名称,如果 文件已存在 则覆盖此文件
'参数 ContinueZipFile 是否要继续压缩文件

Dim InFile As FileStream = Nothing
Dim OutFile As FileStream = Nothing
Dim Zip As Compression.GZipStream = Nothing

Dim errflag As Boolean = False '错误标志

Try
InFile = New FileStream(strSourceFileName, FileMode.Open, FileAccess.Read, FileShare.Read)
OutFile = New FileStream(strZipFileName, FileMode.Create, FileAccess.Write)
Zip = New Compression.GZipStream(OutFile, Compression.CompressionMode.Compress, True)
Dim buffer(CInt(InFile.Length - 1)) As Byte '读取字节缓冲区
Dim ReadCountByte As Integer '每次从文件中读取的字节数
ReadCountByte = InFile.Read(buffer, 0, buffer.Length)
Zip.Write(buffer, 0, buffer.Length)
Catch ex As Exception
MsgBox(ex.Message)
errflag = True
Finally
If Not InFile Is Nothing Then
InFile.Close()
InFile.Dispose()
InFile = Nothing
End If
If Not Zip Is Nothing Then
Zip.Close()
Zip.Dispose()
Zip = Nothing
End If
If Not OutFile Is Nothing Then
OutFile.Close()
OutFile.Dispose()
OutFile = Nothing
End If
End Try

Return Not errflag
End Function
...全文
3504 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmy2370_cn 2006-08-07
  • 打赏
  • 举报
回复
看来Compression.GZipStream类,并不像WinZip或WinRAR那样来压缩文件了

我用我的程序测试压缩了一个Word文档(包含图片、EXCEL表格、文字等),在压缩前大约13M,压缩后却变成成了16M,真是郁闷啊!

谢谢 sp1234 的解答!
  • 打赏
  • 举报
回复
基本上,GZipStream 仅仅适合“随机”出现内容的文本流,而不适合已经精心压缩过的数据。
  • 打赏
  • 举报
回复
程序大概没有错误。

计算机根据算法来的,如果信息本来很紧凑根本不用压缩,压缩之后肯定要变大增加很多冗余控制信息。

压缩不一定把文件变小,不该压缩的不要压缩。我把一个只有字符“123”的txt文件用winzip压缩之后变成88个字符了,这不是很平常的吗?
wmy2370_cn 2006-08-06
  • 打赏
  • 举报
回复
没有人知道呀!

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧