我知道如何使用 rubyzip 检索普通 zip 文件的内容。但是我在解压缩压缩文件夹的内容时遇到了麻烦,我希望你们中的任何一个都可以帮助我。
这是我用来解压缩的代码:
Zip::ZipFile::open(@file_location) do |zip|
zip.each do |entry|
next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?
logger.debug "#{entry.name}"
@data = File.new("#{Rails.root.to_s}/tmp/#{entry.name}")
end
end
entry.name 为我提供了 zip 文件中文件的名称。这与普通的 zipfile 完美配合。但是当从文件夹创建 zipfile 时,条目的名称类似于:test-folder/test.pdf。然后当我尝试创建文件时,它告诉我找不到该文件。这可能是因为它位于 zip 内的“测试”文件夹内。
如果我将条目检查为文件夹,则找不到文件夹。所以我认为解决方案是将条目作为流读取,然后将其保存为文件。获取入口流很容易,但是如何将其保存为文件?这是我到目前为止得到的。
Zip::ZipFile::open(@file_location) do |zip|
zip.each do |entry|
next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?
logger.debug "#{entry.name}"
@data = entry.get_input_stream.read
# How do i create a file from a stream?
end
end
基本上我的问题是:如何从流中创建文件?或者有比我更简单的方法吗?
===编辑=== 我使用回形针来存储文件。