Ruby - 检测读取文件的结尾

时间:2011-12-30 19:34:27

标签: ruby file upload eof

我通过表单上传文件,并在控制器中读取此文件。我的问题是,我不知道,热点检测文件的结尾(=>停止循环时)。这部分代码如下所示:

dat = params[:data]
while(d = dat.read)
  puts d
  break if d.eof #this doesn't work
end

这部分的结果是(循环时无限的 eof 错误除外)。

1 个答案:

答案 0 :(得分:3)

来自http://ruby-doc.org/core-1.9.3/IO.html#method-i-read

如果省略length或为nil,则读取直到EOF并应用编码转换。即使在开始时遇到EOF,它也会返回一个字符串。

所以我猜你应该做dat.read

修改:如果您想要文件的所有行,请使用dat.readlines - 这将返回Array Strings