tôi cần phải đọc một tập tin trong khối MB, là có một cách sạch hơn để làm điều này trong Ruby:Đọc một tập tin trong khối trong Ruby
FILENAME="d:\\tmp\\file.bin"
MEGABYTE = 1024*1024
size = File.size(FILENAME)
open(FILENAME, "rb") do |io|
read = 0
while read < size
left = (size - read)
cur = left < MEGABYTE ? left : MEGABYTE
data = io.read(cur)
read += data.size
puts "READ #{cur} bytes" #yield data
end
end
Có, tính năng này hoạt động. Tuy nhiên, tôi nghĩ rằng IO.read sẽ ném nếu số byte còn lại nhỏ hơn kích thước chunk. Tôi nghĩ rằng bởi vì tôi đã đọc về IO.readbyte, mà sẽ ném TruncatedDataError. Có vẻ như điều đó KHÔNG áp dụng để đọc. Một chỗ trên một phần của tôi. Cảm ơn! – teleball