开发者

Ruby IO#read max length for single read

How can i dete开发者_Python百科rmine the max length IO#read can get in a single read on the current platform?

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


That message comes from io.c, remain_size. It is emitted when the (remaining) size of the file is greater or equal to LONG_MAX. That value depends on the platform your Ruby has been compiled with.

At least in Ruby 1.8.7, the maximum value for Fixnums happens to be just half of that value (-1), so you could get the limit by

2 * 2 ** (1..128).to_a.find { | i | (1 << i).kind_of? Bignum } - 1

You should rather not rely on that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜