Ruby 压缩文件夹 之前找了很久 网上看到的方法 备份一下
来源:互联网 发布:打击网络大v 编辑:程序博客网 时间:2024/05/01 11:06
zip_util.rb
require 'zip/zip'
class ZipUtil
# 压缩文件方法
# zip_file_name 压缩文件绝对路径,含文件名
# file_path 要解压的目录或文件
def self.add_to_zip_file(zip_file_name,file_path)
# start_path 表示
def self.add_file(start_path,file_path,zip)
# 如果文件是一个目录则递归调用此方法
if File.directory?(file_path)
# 建立目录
# 如果省略下一行代码,则当目录为空时,此目录将不会显示在压缩文件中
zip.mkdir(file_path)
# puts "建立目录#{file_path}"
Dir.foreach(file_path) do |filename|
#递归调用add_file方法
add_file("#{start_path}/#{filename}","#{file_path}/#{filename}",zip) unless filename=="." or filename==".."
end
else
# 给压缩文件中添加文件
# start_path 被添加文件在压缩文件中显示的路径
# file_path 被添加文件的源路径
zip.add(start_path,file_path)
# puts "添加文件#{file_path}"
end
end
# 如果文件已存在,则删除此文件
if File.exist?(zip_file_name)
# puts "文件已存在,将会删除此文件并重新建立。"
File.delete(zip_file_name)
end
# 取得要压缩的目录父路径,以及要压缩的目录名
chdir,tardir = File.split(file_path)
# 切换到要压缩的目录
Dir.chdir(chdir) do
# 创建压缩文件
# puts "开始创建压缩文件"
Zip::ZipFile.open(zip_file_name,Zip::ZipFile::CREATE) do |zipfile|
# puts "文件创建成功,开始添加文件..."
# 调用add_file方法,添加文件到压缩文件
# puts "已添加文件列表如下:"
add_file(tardir,tardir,zipfile)
end
end
end
end
使用:
zip_file_url = "/brand_cards/#{record.brand_id}/#{record.id}"
if File.exist?("#{RAILS_ROOT}/public/#{zip_file_url}.zip")
File.delete("#{RAILS_ROOT}/public/#{zip_file_url}.zip")
end
ZipUtil.add_to_zip_file("#{RAILS_ROOT}/public/#{zip_file_url}.zip","#{RAILS_ROOT}/public/#{zip_file_url}")
- Ruby 压缩文件夹 之前找了很久 网上看到的方法 备份一下
- 交通模拟系统 (看到网上的题目自己用简单的方法实现了一下)
- 网上找的压缩文件夹代码,方便以后使用
- 找了很久的bug
- 在网上看到一些高效的编程方法,分享一下
- 网上看到的收藏了
- 网上偶然间看到的,转一下
- Excel vba 写的一个宏,很久没用了,备份一下,备查
- 装apache找了很久的错误
- 靠 头像非本人 网上找的 很久的了 一直改不了 什么时间可以改?
- 找了很久
- 急!!!ssh要很久以后才登陆进去!!!试了网上的一些方法还是不行
- 网上找来的 感觉对入门者很有启示 收藏一下了!
- 网上找了个java随机生成密码的。。。发上来记录一下。
- 网上找了个java随机生成密码的。。。发上来记录一下。
- 看到一家网上购书的了
- 看到有人去面试Java碰到问static的问题,到网上找了几个类似的问题,特此记录
- PHP备份还原数据库类(根据网上抄来的代码小改了一下)
- Linux驱动开发环境搭建之一(建立内核树)
- jsp中获取spring配置文件中的bean
- Android中UI(View)的刷新
- Transductive Support Vector Machine
- IPHONE 之 lib打包
- Ruby 压缩文件夹 之前找了很久 网上看到的方法 备份一下
- Android提高第二篇之SurfaceView(上)
- 关于OC的MBCS编码
- Java.util.date 与 java.sql.date区别和转换
- [转载]YS18-3荧光管电子时钟100%开源放送(软件源工程及代码.硬件原理图)
- Android提高第三篇之SurfaceView(下)
- 网页版飞信(Fetion)的安全问题
- ubuntu 10.04安装 kscope
- 四元数与旋转关系