读取zip存档中的文件,而无需解压缩存档

用户名

我有一个包含100多个zip文件的目录,我需要读取zip文件中的文件以进行一些数据处理,而无需解压缩存档。

是否有一个Ruby库可以读取zip归档文件中的文件内容,而无需将其解压缩?

使用rubyzip会出现错误:

require 'zip'

Zip::File.open('my_zip.zip') do |zip_file|
  # Handle entries one by one
  zip_file.each do |entry|
    # Extract to file/directory/symlink
    puts "Extracting #{entry.name}"
    entry.extract('here')

    # Read into memory
    content = entry.get_input_stream.read
  end
end 

给出此错误:

test.rb:12:in `block (2 levels) in <main>': undefined method `read' for Zip::NullInputStream:Module (NoMethodError)
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:42:in `call'
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:42:in `block in each'
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:41:in `each'
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:41:in `each'
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/central_directory.rb:182:in `each'
    from test.rb:6:in `block in <main>'
    from .gem/ruby/gems/rubyzip-1.1.6/lib/zip/file.rb:99:in `open'
    from test.rb:4:in `<main>'
下一个

Zip::NullInputStream条目是否为一个目录,而不是一个文件被退回,可能是这样的话?

这是代码的更强大的变体:

#!/usr/bin/env ruby

require 'rubygems'
require 'zip'


Zip::File.open('my_zip.zip') do |zip_file|
  # Handle entries one by one
  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 "#{entry.name} is something unknown, oops!"
    end
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从ZIP存档导出文件列表而无需解压缩

在Powershell中替换* .zip文件中的文件而无需解压缩(解压缩)

如何在不解压缩的情况下在zip存档中列出文件?

立即打印存档文件列表(无需解压缩整个存档)

从C#的zip文件中读取二进制文件,而无需将其解压缩

解压缩Shell存档(.shar文件)

读取zip或jar文件,而无需先将其解压缩

修改.zip文件中包含的MS Word文件的内容,而无需解压缩它?

解压缩到以存档命名的新文件夹中的存档管理器

如何仅解压缩zip存档的前几行?

如何使用批处理文件解压缩ZIP存档文件?

从存档中提取一个文件:7-zip是否需要解压缩整个存档?

如何正确解压缩具有希伯来语名称的文件的ZIP存档?

Python zipfile不会解压缩Windows zip存档的文件夹

在Java中无需解压缩即可替换Zip文件

使用ZipFile在Windows UWP App中解压缩Zip存档

替换Zip存档中的特定文件,而无需用Java提取整个存档

DataProc不会解压缩作为存档传递的文件

SonarQube问题:确保解压缩此存档文件是安全的

解压缩到与存档同名的文件夹

解压缩存档时解压缩跳过所有文件

用于在osx上的C中解压缩存档的库

从zip文件夹解压缩单个文件,而无需写入磁盘

解压缩使用哪种方法在存档中查找单个文件?

如何在bash中并行从存档和grep解压缩某些文件

解压缩BZIP2存档

用Groovy解压缩存档

用Java解压缩Gzip存档

使用单个文件解压缩存档,并重命名输出以匹配存档名称

TOP 榜单

热门标签

归档