class Gem::Package::TarReader
TarReader 读取 tar 文件并允许迭代其项
Public Class Methods
Source
# File lib/rubygems/package/tar_reader.rb, line 19 def self.new(io) reader = super return reader unless block_given? begin yield reader ensure reader.close end nil end
在 io 上创建新的 TarReader,如果提供了块,则将其传递给块。
调用超类方法
BasicObject::newSource
# File lib/rubygems/package/tar_reader.rb, line 39 def initialize(io) @io = io @init_pos = io.pos end
在 io 上创建新的 tar 文件读取器,该读取器需要响应 pos、eof?、read、getc 和 pos=
Public Instance Methods
Source
# File lib/rubygems/package/tar_reader.rb, line 53 def each return enum_for __method__ unless block_given? until @io.eof? do begin header = Gem::Package::TarHeader.from @io rescue ArgumentError => e # Specialize only exceptions from Gem::Package::TarHeader.strict_oct raise e unless e.message.match?(/ is not an octal string$/) raise Gem::Package::TarInvalidError, e.message end return if header.empty? entry = Gem::Package::TarReader::Entry.new header, @io yield entry entry.close end end
迭代 tar 包中的文件,生成每个条目
别名也为:each_entry
Source
# File lib/rubygems/package/tar_reader.rb, line 77 def rewind if @init_pos == 0 @io.rewind else @io.pos = @init_pos end end
Source
# File lib/rubygems/package/tar_reader.rb, line 90 def seek(name) # :yields: entry found = find do |entry| entry.full_name == name end return unless found yield found ensure rewind end
在 tar 文件中搜索,直到找到具有 name 的 entry 并生成它。块终止时,tar 文件会重置到开头。