本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。