Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby IO#单次读取的最大读取长度_Ruby_Io - Fatal编程技术网

Ruby 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

如何确定当前平台上单次读取的最大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编译时使用的平台

至少在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。