Bạn có thể đọc tất cả các tập tin cùng một lúc:
content = File.readlines 'file.txt'
content.each_with_index{|line, i| puts "#{i+1}: #{line}"}
Khi tệp lớn hoặc có thể lớn, thường sẽ tốt hơn khi xử lý từng dòng một:
File.foreach( 'file.txt' ) do |line|
puts line
end
Đôi khi bạn muốn truy cập vào tập tin xử lý mặc dù hoặc tự kiểm soát việc đọc:
File.open( 'file.txt' ) do |f|
loop do
break if not line = f.gets
puts "#{f.lineno}: #{line}"
end
end
Trong trường hợp tệp nhị phân, bạn có thể chỉ định dải phân cách và kích thước khối, như vậy:
File.open('file.bin', 'rb') do |f|
loop do
break if not buf = f.gets(nil, 80)
puts buf.unpack('H*')
end
end
Cuối cùng, bạn có thể làm điều đó mà không cần một khối, ví dụ như khi xử lý nhiều tệp cùng một lúc. Trong trường hợp đó, tệp phải được đóng rõ ràng (được cải thiện theo nhận xét của @antinome):
begin
f = File.open 'file.txt'
while line = f.gets
puts line
end
ensure
f.close
end
Tài liệu tham khảo: API tệp và API IO .