2015-08-23 66 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

相关问题