我知道如何使用rubyzip检索正常压缩文件的内容。但是我解压缩zip文件夹的内容时遇到了麻烦,我希望你们中的任何人都能帮助我。如何使用rubyzip解压缩压缩文件夹
这是我使用解压缩代码:
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
基本上我的问题是:如何从流中创建文件?还是有比我更容易的方法吗?
===编辑=== 我用回形针来存储文件。
我试过你的代码,但它只在我的项目的根目录下创建项目的父文件夹。我仍然无法访问它自己的条目。这实际上是一个Errno :: ENOENT - 我想我应该提到这一点。 thx tho – grub4r 2011-05-16 22:03:05