necesito leer un archivo en trozos MB, ¿hay una forma más limpia de hacer esto en Ruby:Leer un archivo en trozos en 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
Sí, esto funciona. Sin embargo, pensé que IO.read arrojaría si el número de bytes restantes era menor que el tamaño del fragmento. Pensé eso porque había leído sobre IO.readbyte, que lanzará TruncatedDataError. Parece que NO se aplica a la lectura. Un oversite de mi parte. Gracias! – teleball