Ruby - 检测读取文件的末尾

发布于 2024-12-24 02:24:03 字数 242 浏览 1 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

再见回来 2024-12-31 02:24:03

来自 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 an Array of Strings

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文