class Gem::Package::TarReader
TarReader
读取 tar 文件,并允许迭代它们的条目
公共类方法
new(io) { |reader| ... } 点击以切换源代码
在 io
上创建一个新的 TarReader
,如果给定块,则将其传递给块。
调用超类方法
# File 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
new(io) 点击以切换源代码
在 io
上创建一个新的 tar 文件读取器,io
需要响应 pos、eof?、read、getc 和 pos=
# File rubygems/package/tar_reader.rb, line 37 def initialize(io) @io = io @init_pos = io.pos end
公共实例方法
close() 点击以切换源代码
关闭 tar 文件
# File rubygems/package/tar_reader.rb, line 45 def close end
each() { |entry| ... } 点击以切换源代码
迭代 tar 包中的文件,产生每个条目
# File 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
也别名为:each_entry
rewind() 点击以切换源代码
seek(name) { |entry| ... } 点击以切换源代码
在 tar 文件中搜索,直到找到具有 name
的 entry
并将其产生。当块终止时,将 tar 文件倒回到开头。
# File 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