2015-08-23 102 views
0

從文件中讀取行有多種方式。這裏有三個:從文件中讀取行的比較

# 1 
File.open("temp.txt", "r") do |f| 
    f.each_line { |l| puts l } 
end 

# 2 
File.open("temp.txt", "r").each_line { |l| puts l }.close 

# 3 
File.readlines("temp.txt").each { |l| puts l } 
  1. 做那些三種方法正確處理文件(即,成功地關閉該文件之後)?
  2. 是否有一種方法超越其他方法(即給定文件相對較大)?如果是這樣,最佳做法是什麼?
+0

1.是的。是的。 –

+0

你可以通過閱讀文檔和http://stackoverflow.com/questions/25189262/why-is-slurping-a-file-bad來自己回答。 –

回答

0

即使發生錯誤,您顯示的第一種方式也會關閉文件,而其他兩種則不會。

+0

對於方法3,它不需要關閉文件,因爲File.readlines(「temp.txt」)'返回一個'Array',對吧? – sbs

+0

@JohnnySun這將讀取整個文件到內存中,所以如果你正在處理一個大文件,你不會想這樣做。 – satoru

+0

@JohnnySun'File.readlines'還處理文件打開/關閉。它甚至不會返回你可能關閉自己的文件對象。 – joanbm

相關問題