尝试读取zip存档中的文件而不提取它们

时间:2017-07-18 21:36:19

标签: ruby zipfile

为了进行数据比较,我一直在尝试阅读压缩文件的内容,类似于此主题中的人:Reading files in a zip archive, without unzipping the archive

我在那里完全尝试了接受的代码,但我仍然得到了错误 /home/fikayo/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/rubyzip-1.2.0/lib/zip/file.rb:73:in `size?': no implicit conversion of Zip::Entry into String (TypeError)

供参考,这是我的代码:

 require 'rubygems'
 require 'zip'

      def read_file
        Zip::File.open(myZip) do |zip_file|
          zip_file.each do |entry|
            if entry.directory?
              puts "#{entry.name} is a folder!"
            elsif entry.symlink?
              puts "#{entry.name} is a symlink!"
            elsif entry.file?
              puts "#{entry.name} is a regular file!"

              # Read into memory
              content = entry.get_input_stream.read

              # Output
              puts content
            else
              puts "No sell"
            end
          end
        end
      end

myZip是我在其中存储zip文件的变量。我检查确认其类型列为Zip::Entry

1 个答案:

答案 0 :(得分:3)

根据rubyzip documentation(以及您关联的问题)mZip应该是String类,并且包含文件路径而不是{{ 1}}或File

Zip::Entry