Ruby IO#单次读取的最大读取长度
如何确定当前平台上单次读取的最大IO读取长度Ruby IO#单次读取的最大读取长度,ruby,io,Ruby,Io,如何确定当前平台上单次读取的最大IO读取长度 irb(main):301:0> File.size('C:/large.file') / 1024 / 1024 => 2145 irb(main):302:0> s = IO.read 'C:/large.file' IOError: file too big for single read 这一信息来自中国。当文件的(剩余)大小大于或等于LONG\u MAX时,将发出该命令。这个值取决于Ruby编译时使用的平台 至少在Rub
irb(main):301:0> File.size('C:/large.file') / 1024 / 1024
=> 2145
irb(main):302:0> s = IO.read 'C:/large.file'
IOError: file too big for single read
这一信息来自中国。当文件的(剩余)大小大于或等于LONG\u MAX
时,将发出该命令。这个值取决于Ruby编译时使用的平台
至少在Ruby 1.8.7中,Fixnums的最大值恰好是该值的一半(-1),因此可以通过
2 * 2 ** (1..128).to_a.find { | i | (1 << i).kind_of? Bignum } - 1
2*2**(1..128).to_a.find{i |(1)我在读取一个50 GB的文件时遇到了相同的错误,上面给出了使用Ruby 2.1.2和1.9.3的9223372036854775807,甚至在Linux上是1.8.7。