ruby - Zip::ZipFile:如何在不解压zip的情况下修改内部文本文件的内容?

标签 ruby zip

干杯, 作为 ruby​​ 的初学者,我目前正在用 ruby​​ 解决我的小世界问题,以适应它。现在我正在尝试修改 zip 容器中文本文件的内容。

结构是

ZIP
  >> diretory/
     >> mytext.text

我可以迭代内容

Zip::ZipFile.open(file_path) do |zipfile|
  files = zipfile.select(&:file?)
  files.each do |zip_entry|
    ## ....?
  end
end

...但是我发现在不解压文本文件的情况下修改它非常困难。

感谢任何帮助!

最佳答案

因此,在 Ben 的帮助下,这里有一个解决方案:

require "rubygems"
require "zip/zip"
zip_file_name = "src/test.zip"

Zip::ZipFile.open(zip_file_name) do |zipfile|
  files = zipfile.select(&:file?)
  files.each do |zip_entry|
    contents = zipfile.read(zip_entry.name)
    zipfile.get_output_stream(zip_entry.name){ |f| f.puts contents + ' added some text' }
  end
  zipfile.commit
end

我虽然以前尝试过这个 - 无论如何。非常感谢!

关于ruby - Zip::ZipFile:如何在不解压zip的情况下修改内部文本文件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702908/

相关文章:

ruby - 如何覆盖 String.scan 和 FindAllString 中的匹配行为?

list - scala zip 列表到元组

javascript - 如何知道 npm `unzip` 模块何时完成解压缩文件?

javascript - Adm Zip 将文件压缩为目录

ruby-on-rails - Rails 模型范围没有选择好的查询

ruby-on-rails - 确定乘客的瓶颈

ruby Facebook 应用程序在授权后重定向到 Canvas 之外

javascript - 使用内置模块压缩文件夹

passwords - 解压脚本密码

ruby - 如何使用 ruby​​ 遍历这个 json 文档?