official documentation未指定。我理解EOFError的意思是“文件结束错误”,但究竟是什么意思呢?如果文件阅读器到达文件的末尾,那对我来说听起来不是一个错误。
答案 0 :(得分:13)
EOFError在所有IO中都很方便,这个类是ruby中所有输入/输出的基础。现在还要记住核心的Unix概念:一切都是文件。这包括套接字。因此,如果您打开一个套接字并正在读取它,则异常情况可能是遇到文件结尾。
那里的所有例子都显示了EOFError的琐碎用法(在阅读一些文本文件时),这些用法并不实用。但是,开始挖掘net / http或其他大量使用套接字的类,你会看到使用这个异常。
编辑从net / ftp
添加此示例def getline
line = @sock.readline # if get EOF, raise EOFError
line.sub!(/(\r\n|\n|\r)\z/n, "")
if @debug_mode
print "get: ", sanitize(line), "\n"
end
return line
end
答案 1 :(得分:9)
readline
。
例如:
import_file = File.open(filename)
begin
while (line = import_file.readline)
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
rescue EOFError
# Finished processing the file
end
没有EOFError可以实现同样的目标:
File.open(filename).each do |line|
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end