Sie können die Datei auf einmal lesen:
content = File.readlines 'file.txt'
content.each_with_index{|line, i| puts "#{i+1}: #{line}"}
Wenn die Datei groß ist oder groß sein kann, ist es normalerweise besser, sie zeilenweise zu verarbeiten:
File.foreach( 'file.txt' ) do |line|
puts line
end
Manchmal möchten Sie jedoch auf das Dateihandle zugreifen oder die Lesevorgänge selbst steuern:
File.open( 'file.txt' ) do |f|
loop do
break if not line = f.gets
puts "#{f.lineno}: #{line}"
end
end
Bei Binärdateien können Sie ein Nulltrennzeichen und eine Blockgröße wie folgt angeben:
File.open('file.bin', 'rb') do |f|
loop do
break if not buf = f.gets(nil, 80)
puts buf.unpack('H*')
end
end
Schließlich können Sie es ohne Block tun, beispielsweise wenn Sie mehrere Dateien gleichzeitig verarbeiten. In diesem Fall muss die Datei explizit geschlossen werden (verbessert gemäß Kommentar von @antinome):
begin
f = File.open 'file.txt'
while line = f.gets
puts line
end
ensure
f.close
end
Referenzen: Datei-API und E / A-API .