读取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条评论
登录后参与评论

相关文章

来自分类Dev

创建批处理脚本以解压缩文件而无需其他zip工具

来自分类Dev

从档案中获取程序集文件版本而无需解压缩

来自分类Dev

在jar中编辑.properties文件,而无需将其解压缩或更改为.zip格式

来自分类Dev

无需压缩即可将文件添加到zip存档

来自分类Dev

解压缩(解压缩zip)文件显示错误,存档意外结束

来自分类Dev

解压缩tbz存档中的单个文件

来自分类Dev

从存档解压缩单个文件

来自分类Dev

在.Net CORE 1.0中解压缩存档

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

瓦拉:如何在不解压缩的情况下检索zip存档中所有文件的名称?

来自分类Dev

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

Related 相关文章

  1. 1

    创建批处理脚本以解压缩文件而无需其他zip工具

  2. 2

    从档案中获取程序集文件版本而无需解压缩

  3. 3

    在jar中编辑.properties文件,而无需将其解压缩或更改为.zip格式

  4. 4

    无需压缩即可将文件添加到zip存档

  5. 5

    解压缩(解压缩zip)文件显示错误,存档意外结束

  6. 6

    解压缩tbz存档中的单个文件

  7. 7

    从存档解压缩单个文件

  8. 8

    在.Net CORE 1.0中解压缩存档

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

    瓦拉:如何在不解压缩的情况下检索zip存档中所有文件的名称?

  29. 29

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

热门标签

归档