Method: SevenZipRuby::SevenZipReader#extract
- Defined in:
- lib/seven_zip_ruby/seven_zip_reader.rb
permalink #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
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.(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 |