关于 GZipStream

小白兔 2016-01-08 09:40:11
我用类编写了一个关于 GZipStream 压缩的过程,但是主窗体提示目标文件名时,老是号称“文件未找到”。但是资源管理器中目标文件确实存在啊……请问啥意思?
...全文
158 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白兔 2016-01-12
  • 打赏
  • 举报
回复
目标文件的 FileInfo.FullName 空,不存在
xdashewan 2016-01-11
  • 打赏
  • 举报
回复
引用 4 楼 小白兔 的回复:
以上过程没有问题,目标文件也出现了并被压缩了,体积小了。后来我想实现列出目标文件的名称,并通过目标文件.Length/源文件.Length 来计算压缩率,但是回到主窗体那个按钮 CLick 过程时,却出现目标文件不存在错误,但源文件部分没事,同时查看资源管理器中目标文件已存在。而且压缩流 GZipStream.Lenth 属性不存在了,没法直接计算……
你尝试断点在目标文件不存在错误的地方,看一下路径是什么
小白兔 2016-01-11
  • 打赏
  • 举报
回复
我是用两个 FileInfo 对象来存储源文件和目标文件,其实目标文件使用源文件的 .FullName 属性添加了一个 “.xbt” 的后缀,意图是压缩后避免忘记源文件的扩展名,例如压缩 “123.docx”,得到 “123.docx.xbt”。然后把它们传递给压缩文件过程: Dim 缓冲区 As Byte() Try Using 源文件流 As New FileStream(源文件.FullName, FileMode.Open, FileAccess.Read, FileShare.Read) 缓冲区 = New Byte(CInt(源文件流.Length - 1)) {} Dim 检查计数器 As Integer = 源文件流.Read(缓冲区, 0, 缓冲区.Length) Using 目标文件流 As New FileStream(目标文件.FullName, FileMode.OpenOrCreate, FileAccess.Write) Using 压缩流 As New GZipStream(目标文件流, CompressionMode.Compress, True) 压缩流.Write(缓冲区, 0, 缓冲区.Length) 压缩率 = CDbl(压缩流.Length / 源文件流.Length) End Using End Using End Using Return True Catch ex As ApplicationException MessageBox.Show(ex.Message, "压缩文件过程中发生致命错误!", MessageBoxButtons.OK, MessageBoxIcon.Error) Return False End Try 以上过程没有问题,目标文件也出现了并被压缩了,体积小了。后来我想实现列出目标文件的名称,并通过目标文件.Length/源文件.Length 来计算压缩率,但是回到主窗体那个按钮 CLick 过程时,却出现目标文件不存在错误,但源文件部分没事,同时查看资源管理器中目标文件已存在。而且压缩流 GZipStream.Lenth 属性不存在了,没法直接计算……
threenewbee 2016-01-09
  • 打赏
  • 举报
回复
贴出你的路径看下,注意后缀名,路径分割符等
小白兔 2016-01-09
  • 打赏
  • 举报
回复
我知道啊。我是把目标文件作为GZipStream流的写入路径,并且确实压缩了,确实写入该文件了,但是我想显示该文件的大小(FIleInfo.Length),但是提示该文件不存在,但在资源管理器中确实存在啊
Poopaye 2016-01-08
  • 打赏
  • 举报
回复
楼主知道啥叫路径吗?

16,722

社区成员

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

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