class Gem::Package::TarReader
TarReader
读取 tar 文件并允许迭代其条目
公共类方法
源代码
# 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::new
源代码
# File lib/rubygems/package/tar_reader.rb, line 37 def initialize(io) @io = io @init_pos = io.pos end
在 io
上创建一个新的 tar 文件读取器,该读取器需要响应 pos, eof?, read, getc 和 pos=。
公共实例方法
源代码
# File lib/rubygems/package/tar_reader.rb, line 51 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
迭代 tarball 中的文件,产生每个条目
也别名为: each_entry
源代码
源代码
# File lib/rubygems/package/tar_reader.rb, line 88 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 文件倒回到开头。