我想迭代地读取文件中固定数量的字节,并返回它们
我的代码如下。我从互联网上的一个例子中得到了它
File.open('textfile.txt') do |file|
while (buffer = file.read(size)) do
yield buffer
end
end
我得到的错误没有给出阻止。
答案 0 :(得分:5)
嗯,那是因为没有给出阻止。您可以将yield buffer
替换为puts buffer
(或任何您想要的操作),也可以使用代码块创建单独的方法:
def read_file
File.open('textfile.txt') do |file|
while (buffer = file.read(size)) do
yield buffer
end
end
end
并像这样称呼它
read_file do |data|
// do something with data
puts data
end
如有必要,将常规参数(如文件名或块大小)添加到read_file
。
答案 1 :(得分:5)
我不知道你在那里想要做什么。在你想要重复调用的块中使用yield,就像枚举器一样。做这样的事情要容易得多。
File.open('test.txt') do|file|
until file.eof?
buffer = file.read(10)
# Do something with buffer
puts buffer
end
end