当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Buffer.map用法及代码示例


本文简要介绍ruby语言中 IO::Buffer.map 的用法。

用法

IO::Buffer.map(file, [size, [offset, [flags]]]) → io_buffer

通过内存映射文件创建 IO::Buffer 以从 file 读取。 file_io 应该是 File 实例,打开以供读取。

可以指定映射的可选sizeoffset

默认情况下,缓冲区是不可变的(只读);要创建可写映射,您需要以读写模式打开文件,并显式传递不带 IO::Buffer::IMMUTABLE 的 flags 参数。

File.write('test.txt', 'test')

buffer = IO::Buffer.map(File.open('test.txt'), nil, 0, IO::Buffer::READONLY)
# => #<IO::Buffer 0x00000001014a0000+4 MAPPED READONLY>

buffer.readonly?   # => true

buffer.get_string
# => "test"

buffer.set_string('b', 0)
# `set_string': Buffer is not writable! (IO::Buffer::AccessError)

# create read/write mapping: length 4 bytes, offset 0, flags 0
buffer = IO::Buffer.map(File.open('test.txt', 'r+'), 4, 0)
buffer.set_string('b', 0)
# => 1

# Check it
File.read('test.txt')
# => "best"

请注意,某些操作系统可能在映射缓冲区和文件读取之间没有缓存一致性。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Buffer.map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。