आप फ़ाइल को एक साथ पढ़ सकते हैं:
content = File.readlines 'file.txt'
content.each_with_index{|line, i| puts "#{i+1}: #{line}"}
जब फ़ाइल बड़ी होती है, या बड़ी हो सकती है, तो आमतौर पर इसे लाइन-बाय-लाइन प्रोसेस करना बेहतर होता है:
File.foreach( 'file.txt' ) do |line|
puts line
end
कभी-कभी आप फ़ाइल हैंडल तक पहुँच चाहते हैं, या फिर स्वयं को नियंत्रित करते हैं:
File.open( 'file.txt' ) do |f|
loop do
break if not line = f.gets
puts "#{f.lineno}: #{line}"
end
end
बाइनरी फ़ाइलों के मामले में, आप एक नील-विभाजक और एक ब्लॉक आकार निर्दिष्ट कर सकते हैं, जैसे:
File.open('file.bin', 'rb') do |f|
loop do
break if not buf = f.gets(nil, 80)
puts buf.unpack('H*')
end
end
अंत में आप इसे एक ब्लॉक के बिना कर सकते हैं, उदाहरण के लिए जब एक साथ कई फ़ाइलों को संसाधित करते हैं। उस स्थिति में फ़ाइल को स्पष्ट रूप से बंद किया जाना चाहिए (@antinome की टिप्पणी के अनुसार):
begin
f = File.open 'file.txt'
while line = f.gets
puts line
end
ensure
f.close
end
संदर्भ: फ़ाइल एपीआई और आईओ एपीआई ।