阅读 readme.md 中的 zip 示例 - main:Object 的未定义局部变量或方法“dest_file”(NameError)

Read zip example in readme.md - undefined local variable or method `dest_file' for main:Object (NameError)

执行ready.md中的示例代码,我得到了上面的错误。搜索源代码我找不到方法 dest_file。我实现的代码 -

require 'rubygems'
require 'zip'

Zip::File.open('test.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(dest_file)

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

我是不是理解错了?我的假设是 dest_file 为文件提供了正确的元数据以便它可以保存,但是替换为明显的 entry.name 会引发错误。

您尚未定义 dest_file 值。您需要指定文件名。也许你可以使用:

 entry.extract(entry.name)

解压当前目录下与源文件同名的文件


如果你想解压到特定的目录,那么,你可以做如下的操作:

require "zip"

output_dir = "/tmp/"

Zip::File.open('a.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("#{File.expand_path(output_dir)}/#{entry.name}")
  end
end