本文简要介绍ruby语言中 IO::Buffer.map
的用法。
用法
IO::Buffer.map(file, [size, [offset, [flags]]]) → io_buffer
通过内存映射文件创建 IO::Buffer
以从 file
读取。 file_io
应该是 File
实例,打开以供读取。
可以指定映射的可选size
和offset
。
默认情况下,缓冲区是不可变的(只读);要创建可写映射,您需要以读写模式打开文件,并显式传递不带 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 Buffer.slice用法及代码示例
- Ruby Buffer.set_value用法及代码示例
- Ruby Buffer.external?用法及代码示例
- Ruby Buffer.free用法及代码示例
- Ruby Buffer.new用法及代码示例
- Ruby Buffer.for用法及代码示例
- Ruby Buffer.locked?用法及代码示例
- Ruby Buffer.transfer用法及代码示例
- Ruby Buffer.clear用法及代码示例
- Ruby Buffer.copy用法及代码示例
- Ruby Buffer.locked用法及代码示例
- Ruby Buffer.get_value用法及代码示例
- Ruby Buffer.get_string用法及代码示例
- Ruby Buffer.to_s用法及代码示例
- Ruby Buffer.resize用法及代码示例
- Ruby Buffer类用法及代码示例
- Ruby Buffering.read_nonblock用法及代码示例
- Ruby Buffering.write_nonblock用法及代码示例
- Ruby Bundler.setup用法及代码示例
- Ruby Bundler模块用法及代码示例
- Ruby Bundler.require用法及代码示例
- Ruby Bundler.definition用法及代码示例
- Ruby BigMath.cos用法及代码示例
- Ruby Binding.local_variable_defined?用法及代码示例
- Ruby BigDecimal.self >用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Buffer.map。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。