Techioz Blog

Rubyでファイルの行を読み取る方法

概要

次のコードを使用してファイルから行を読み取ろうとしていました。ただし、ファイルを読み取るときは、内容はすべて 1 行になります。

line_num=0
File.open('xxx.txt').each do |line|
  print "#{line_num += 1} #{line}"
end

ただし、このファイルは各行を個別に出力します。

Ruby my_prog.rb < file.txt のような stdin を使用する必要がありますが、ファイルで使用されている行末文字が何であるかを推測できません。どうすれば対処できますか?

解決策

Ruby にはこれを行うためのメソッドがあります。

File.readlines('foo', chomp: true).each do |line|
    puts(line)
end

http://ruby-doc.org/core-1.9.3/IO.html#method-c-readlines