在Ruby中,使用固定大小的缓冲区读取文本文件的正确方法是什么?
我正试图绕过这个缓慢的文件。Ruby的每一行实现在Ruby中,使用固定大小的缓冲区读取文本文件的正确方法是什么?,ruby,performance,file,file-io,Ruby,Performance,File,File Io,我正试图绕过这个缓慢的文件。Ruby的每一行实现 def parse @file = File.open(@file) @filesize = @file.stat.size @buffer_size = 10485 @offset = @buffer_size @counter = 0 @line_counter = 0 @file.seek(0, File::SEEK_END)
def parse
@file = File.open(@file)
@filesize = @file.stat.size
@buffer_size = 10485
@offset = @buffer_size
@counter = 0
@line_counter = 0
@file.seek(0, File::SEEK_END)
while @file.tell > 0
@file.seek(-@offset, File::SEEK_END)
buffer = @file.read(@buffer_size)
buffer_line = buffer.split("\n")[1]
@counter += 1
puts @counter
@offset += @buffer_size
return if @offset > @filesize
end
end
我不知道如何实现一个缓冲区来存储每行的剩余部分。ruby talk邮件列表中也讨论过类似的问题。该线程称为
.我看不出答案在那里。在中,请看以whilebuf2=f.read@bufsize开头的外观。它是您试图实现的目标的小型实现`