2010-08-27 35 views
2

我想迭代读取文件中的固定数量的字节,并返回它们如何在Ruby中一次读取文件,字节?

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

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

我得到的错误没有给出块。

+1

红宝石食谱(http://oreilly.com/catalog/9780596523695)具有优秀的标准食谱和常用任务的惯用方式。 – Swanand 2010-08-27 07:05:07

回答

3

那么,那是因为没有块给出。您可以替换yield bufferputs 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,如有必要。

4

我不知道你在那里做什么。产量是你想要反复调用的块内使用的东西,就像一个枚举器。做这样的事情要容易得多。

File.open('test.txt') do|file| 
    until file.eof? 
    buffer = file.read(10) 
    # Do something with buffer 
    puts buffer 
    end 
end 
相关问题