在Ruby中,可以使用Zip
库来压缩包含子文件夹的文件夹。以下是一个完整的示例代码:
require 'zip'
def zip_folder(folder_path, output_path)
Zip::File.open(output_path, Zip::File::CREATE) do |zipfile|
Dir[File.join(folder_path, '**', '**')].each do |file|
relative_path = file.sub(folder_path, '')
zipfile.add(relative_path, file)
end
end
end
folder_path = '/path/to/folder'
output_path = '/path/to/output.zip'
zip_folder(folder_path, output_path)
上述代码中,zip_folder
方法接受两个参数:folder_path
表示要压缩的文件夹路径,output_path
表示压缩后的输出文件路径。
首先,我们使用Zip::File.open
方法创建一个新的压缩文件。Zip::File::CREATE
参数表示如果文件不存在,则创建新文件。
然后,使用Dir[File.join(folder_path, '**', '**')]
获取文件夹下的所有文件和子文件夹。File.join
用于拼接文件路径,**
表示匹配任意层级的子文件夹。
接下来,使用zipfile.add
方法将文件添加到压缩文件中。relative_path
表示文件在压缩文件中的相对路径,file
表示文件的完整路径。
最后,使用end
结束Zip::File.open
块,确保压缩文件被正确关闭。
使用时,只需将folder_path
和output_path
替换为实际的文件夹路径和输出路径即可。压缩后的文件将保存在指定的输出路径中。
领取专属 10元无门槛券
手把手带您无忧上云