【问题标题】:Comparison in reading lines from file从文件中读取行的比较
【发布时间】:2015-08-23 23:27:12
【问题描述】:

有多种方法可以从文件中读取行。以下是三个:

# 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. 是否存在一种方法优于其他方法的情况(即给定文件相对较大)?如果是这样,最佳做法是什么?

【问题讨论】:

标签: ruby file io


【解决方案1】:

您展示的第一种方式会在发生错误时关闭文件,而其他两种方式则不会。

【讨论】:

  • 对于方法3,它不需要关闭文件,因为File.readlines("temp.txt")返回一个Array,对吧?
  • @JohnnySun 这会将整个文件读入内存,所以如果你正在处理一个大文件,你不会想这样做。
  • @JohnnySun File.readlines 也处理文件打开/关闭。它甚至不返回您可能关闭的文件对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
相关资源
最近更新 更多