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

Cou*_*Cet 2 ruby file-io

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

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

File.open('textfile.txt') do |file|
  while (buffer = file.read(size)) do
     yield buffer
  end
end
Run Code Online (Sandbox Code Playgroud)

我得到错误没有给出阻止.

Nik*_*bak 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
Run Code Online (Sandbox Code Playgroud)

并称之为这样

read_file do |data|
  // do something with data
  puts data 
end
Run Code Online (Sandbox Code Playgroud)

read_file如有必要,添加常规参数(如文件名或块大小).


Abo*_*uby 5

我不知道你在那里想要做什么.在你想要重复调用的块中使用yield,就像枚举器一样.做这样的事情要容易得多.

File.open('test.txt') do|file|
  until file.eof?
    buffer = file.read(10)
    # Do something with buffer
    puts buffer
  end
end
Run Code Online (Sandbox Code Playgroud)