如何在Ruby中一次读取文件,字节?

时间:2010-08-27 03:36:40

标签: ruby file-io

我想迭代地读取文件中固定数量的字节,并返回它们

我的代码如下。我从互联网上的一个例子中得到了它

File.open('textfile.txt') do |file|
  while (buffer = file.read(size)) do
     yield buffer
  end
end

我得到的错误没有给出阻止。

2 个答案:

答案 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
相关问题