gpt4 book ai didi

ruby - 如何使用 Rubyzip 库覆盖现有文件

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:34 34 4
gpt4 key购买 nike

我正在尝试解压缩一个包含多个文件的文件,这些文件可能已存在于目标目录中,也可能不存在。似乎默认行为是在文件已存在时抛出异常。

如何解压缩到一个目录并简单地覆盖现有文件?

这是我的代码:

begin
Zip::ZipFile.open(source) do |zipfile|
dir = zipfile.dir
dir.entries('.').each do |entry|
zipfile.extract(entry, "#{target}/#{entry}")
end
end
rescue Exception => e
log_error("Error unzipping file: #{local_zip} #{e.to_s}")
end

最佳答案

只是为了省去别人的麻烦:

答案2中的提取命令不正确:

第三个 (proc) 参数是用一个 & 符号指定的,这意味着 ruby​​ 期望它在方法调用之后位于 {}-Brackets 中,如下所示:

zipfile.extract(entry, "#{target}/#{entry}"){ true }

或者(如果你需要更复杂的逻辑)

zipfile.extract(entry, "#{target}/#{entry}") {|entry, path| some_logic(entry, path) }

如果您使用帖子 #2 中给出的示例,您将收到“无效参数(3 对 2)”错误...

关于ruby - 如何使用 Rubyzip 库覆盖现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966054/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com