Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::GzipReaderクラス > lineno=

instance method Zlib::GzipReader#lineno=

lineno=(num)[permalink][rdoc]

IO クラスの同名メソッドIO#lineno=と同じです。

但し、gzip ファイル中にエラーがあった場合 Zlib::Error 例外や Zlib::GzipFile::Error 例外が発生します。

gzip ファイルのフッターの処理に注意して下さい。 gzip ファイルのフッターには圧縮前データのチェックサムが記録されています。GzipReader オブジェクトは、次の時に展開したデータとフッターの照合を行い、エラーがあった場合は Zlib::GzipFile::NoFooter, Zlib::GzipFile::CRCError, Zlib::GzipFile::LengthError 例外を発生させます。

[PARAM] num:
新たな行番号を整数で指定します。
[EXCEPTION] Zlib::Error:
Zlib::Error を参照
[EXCEPTION] Zlib::GzipFile::Error:
Zlib::GzipFile::Errorを参照
[EXCEPTION] Zlib::GzipFile::NoFooter:
Zlib::GzipFile::NoFooterを参照
[EXCEPTION] Zlib::GzipFile::CRCError:
Zlib::GzipFile::CRCErrorを参照
[EXCEPTION] Zlib::GzipFile::LengthError:
Zlib::GzipFile::LengthErrorを参照
require 'zlib'

=begin
# hoge.gz がない場合は下記で作成できる。
Zlib::GzipWriter.open('hoge.gz') { |gz|
  gz.puts 'h'
  gz.puts 'o'
  gz.puts 'g'
  gz.puts 'e'
}
=end

Zlib::GzipReader.open('hoge.gz') { |gz|
  while l = gz.gets
    l.chomp!
    gz.lineno = 1000 if l == "o"
    printf "%s %d\n", l, gz.lineno
  end
}
#=> h 1
#=> o 1001
#=> g 1002
#=> e 1003

[SEE_ALSO] IO#lineno=