Ruby - 检测读取文件的末尾
我通过表单上传一个文件,并在控制器中读取该文件。我的问题是,我不知道,热检测文件的结尾(=>当停止循环时)。这部分代码如下所示:
dat = params[:data]
while(d = dat.read)
puts d
break if d.eof #this doesn't work
end
这部分的结果是(除了关于eof的错误)循环时的无穷大。
I upload through a form a file and in the controller this file read. My problem is, that I don't know, hot to detect the end of the file (=> when stop a loop). This part of code looks like this:
dat = params[:data]
while(d = dat.read)
puts d
break if d.eof #this doesn't work
end
The result of this part is (except the error about eof) infinity while looping.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自 http://ruby-doc.org/core- 1.9.3/IO.html#method-i-read:
如果 length 被省略或为零,则读取到 EOF 并应用编码转换。即使开头遇到 EOF,它也会返回一个字符串。
所以我想你应该做
dat.read
编辑:如果你想要文件的所有行,请使用
dat.readlines
- 这将返回一个Array<
字符串
的/code>From http://ruby-doc.org/core-1.9.3/IO.html#method-i-read:
If length is omitted or is nil, it reads until EOF and the encoding conversion is applied. It returns a string even if EOF is met at beginning.
So I guess you should just do
dat.read
Edit: if you want all the lines of the file, use
dat.readlines
- this will return anArray
ofStrings