下記のように open
関数を単独で使用する場合は、明示的な close
処理が必要です。
file = open('input.txt')
file.each do |line|
puts line
end
file.close
file = open('input.txt')
while line = file.gets
puts line
end
file.close
ファイルの open
時にブロックを指定すると、自動で close
処理を行ってくれます。
open('input.txt') do |file|
file.each do |line|
puts line
end
end
上記のように、ブロックパラメータである file
変数を一度しか参照しないのであれば、下記のように open
と each
をチェーンすることで、より簡潔に記述することができます。
open('input.txt').each do |line|
puts line
end
テキストファイルを 1 行ずつ処理する場合は、File.foreach
を使用すると、とてもシンプルに記述できます。
File.foreach('input.txt') do |line|
puts line
end
line = open('input.txt').gets