rubyzip 初体验

非常讨厌看类文档,那些东西空洞无物,但是有时候是没有办法的,比如rubyzip,因为需要在项目中使用zip包,只能看类文档了。

第一次使用这东西其实出了不少问题,下面先贴一段有问题的测试代码:

require 'zip/zipfilesystem'
Zip::ZipFile.open("E:\\moive\\c.zip") { #打开
|zf|
zf.dir.entries("").each do |ak| #get files list on root path in zip File
file = File.new("e:\\#{ak}","w+")
file.write(zf.file.open(ak).read())
file.close()
end
}
以上方法有一个问题就是如果读写的是文本文件问题不大(也不是没有问题是看不出),通过FILE泪下的open方法可以得到某个文件的文件流,利用File类可以写入,但问题恰恰出现在这里,这个方法不是真正意义的解压缩,它有个毛病会把一些控制字符转移比如它会吧OA转成 ODOA,所以当你用这个方法保存的文件文件尺寸和原来是不同的,大家一定要注意对于小文件还可以使用 read或者readline方法得到它的string对象这样更方便。

下面贴一个正确的代码:

require 'zip/zipfilesystem'
Zip::ZipFile.open("E:\\moive\\c.zip") {
|zf|
zf.dir.entries("").each do |ak|
zf.extract(ak,"e:\\#{ak}")
end
}

直接用extract方法就好了,这个应该是最简单的,如果要判断文件类别或者重命名都可以简单的在参数中自己设定,非常方便。


更多参考请看:
http://rubyzip.sourceforge.net/
我也是看了一个晚上基本看完了,现在比较困,非常困,坚持中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值