Method: SevenZipRuby::SevenZipReader#extract

Defined in:
lib/seven_zip_ruby/seven_zip_reader.rb

#extract(index, dir = ".") ⇒ Object

Extract some entries of 7zip archive to local directory.

Args

index

Index of the entry to extract. Integer or Array of Integer can be specified.

dir

Directory to extract the archive to.

Examples

File.open("filename.7z", "rb") do |file|
  SevenZipRuby::SevenZipReader.open(file) do |szr|
    szr.extract([ 1, 2, 4 ], "path_to_dir")
  end
end

File.open("filename.7z", "rb") do |file|
  SevenZipRuby::SevenZipReader.open(file) do |szr|
    szr.extract(:all, "path_to_dir")
  end
end
[View source]

338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/seven_zip_ruby/seven_zip_reader.rb', line 338

def extract(index, dir = ".")
  path = File.expand_path(dir)
  case(index)
  when Symbol
    raise SevenZipError.new("Argument error") unless (index == :all)
    return extract_all(path)
  when Enumerable
    index_list = index.map(&:to_i).sort.uniq
    synchronize do
      extract_files_impl(index_list, file_proc(path))
    end
  when nil
    raise ArgumentError.new("Invalid parameter index")
  else
    synchronize do
      extract_impl(index.to_i, file_proc(path))
    end
  end
end