Ruby 压缩文件夹 之前找了很久 网上看到的方法 备份一下
2011-04-20 11:00
525 查看
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}")
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}")
相关文章推荐
- ZOJ1016 题解此题一开始想用模拟算法结果调试了很久也没做出来,之后在网上看到这种方法很巧妙,果断采用。
- 在网上看到一些高效的编程方法,分享一下
- 使用“ntbackup”命令通过命令行或批处理文件备份文件或文件夹的方法。
- [W001]Windows 超大文件夹winsxs 目录压缩方法(适用于 7,2008,vista)
- C++类中各种不同类型成员根据是否static 、是否const类型的初始化方法不尽相同,写代码时经常搞乱,网上搜了一下资料,全部总结一下。一、例子 [cpp] view plaincopy ---
- SQL数据库的备份、还原、压缩与数据转移的方法
- SQL数据库的备份、还原、压缩与数据转移的方法
- 闪客工具 收集一下网上有意思的方法
- 看到网上的效果,也学习一下ps的通道
- Linux自动备份压缩MySQL数据库的实用方法
- 批处理备份压缩上个月的文件及延时的方法
- Java 针对文件与文件夹进行压缩的方法
- 网上找到的获取浏览器滚动条距离顶端的距离 的方法,收藏一下
- 关于如何坚持目标,网上偶然看到的,转载一下
- 在VS2005下用C++写的程序,安装到另一台未安装VS2005的电脑上,结果出现如下的问题:““由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”。在我自己的机子上就能正常安装运行。查了一下网上的方法: 方法一: 在类似
- Linux 压缩某个文件夹的实现方法
- 今天分公司的人遇到监听方面的问题,从网上搜索方法解决了备注一下
- 网上看到的ArcEngine控制地图显示范围的好方法(记下)
- jade 网上看到一个不错的demo 分享 一下 链接
- 网上看到的计算python 月份增加的解决方法