2011-08-23 42 views
111

如何在Ruby中讀取可能使用循環的文件?如何使用Ruby讀取文件?

如果可能,請提供一些示例代碼。

+127

我認爲,SO已成爲替代閱讀的文檔,如果不管是它是什麼意思了(我搜索了「紅寶石閱讀文件「,並在這裏得到了我的答案)。 – Wes

+21

這是我在谷歌搜索時彈出的第一件事情:) – Flov

+18

文檔通常非常繁瑣閱讀。我不需要一個完整的參考資料,只是爲了讓我開始。 – Maarten

回答

95
# Created by Michael Williams 12/19/2005 
# Licensed under Create Commons Attribution License 

實施例1 - 讀取文件並關閉:

counter = 1 
file = File.new("readfile.rb", "r") 
while (line = file.gets) 
    puts "#{counter}: #{line}" 
    counter = counter + 1 
end 
file.close 

實施例2 - 通過文件來阻止:

File.open("readfile.rb", "r") do |infile| 
    while (line = infile.gets) 
     puts "#{counter}: #{line}" 
     counter = counter + 1 
    end 
end 

例3 - 閱讀與異常處理文件:

counter = 1 
begin 
    file = File.new("readfile.rb", "r") 
    while (line = file.gets) 
     puts "#{counter}: #{line}" 
     counter = counter + 1 
    end 
    file.close 
rescue => err 
    puts "Exception: #{err}" 
    err 
end 
+62

。 –

+1

看起來太像Java代碼。 Ruby是一種腳本語言,您應該可以通過簡單直觀的線閱讀文件。 (除非你需要更復雜的東西)。儘管OP確實要求一個for循環,但是大多數只想讀取文件的開發人員應該看看@ Dogbert的下載。 –

+0

這些不是如何在Ruby中讀取文件的好例子。我建議閱讀IO和File文檔,並利用那些經過良好測試的方法。 –

566
+22

'read'方法的實際鏈接是: http://www.ruby-doc.org/core-1.9.3/IO.html#method-c-read –

+40

這應該是被接受的答案。 –

+4

我在Windows上有這個方法的**問題**用Ruby 1.8.7讀取一些二進制文件 似乎它在文本模式下讀取文件,所以有時我只接收文件的一部分。 因此,我決定使用File.open(path_to_file,'rb')'作爲Windows上更安全的二進制文件讀取方式。 – Inversion