當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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