StringIO

StringIO

StringIO는 문자열을 대상으로 하는 IO 스트림이에요. IO와 비슷한 방식으로 접근할 수 있지요. 문자열을 파일인 것처럼 읽고 쓸 수 있게 해 줘요.

출처: Ruby 3.3 API

본문

StringIOObject를 상속하고 Enumerable, IO::generic_readable, IO::generic_writable을 포함해요. 예제들은 StringIO가 require 됐다고 가정해요.

require 'stringio'

Constants

VERSION

Public Class Methods

new(string = '', mode = 'r+') → new_stringio

stringmode로 만든 새 StringIO 인스턴스를 돌려줘요. 단, string이 frozen이면 mode 기본값이 'r'이 돼요.

strio = StringIO.new # => #<StringIO>
strio.close

더 이상 필요 없을 때 인스턴스를 닫아야 해요. 블록을 받아 자동으로 닫는 StringIO.open과 관련돼 있어요.

open(string = '', mode = 'r+') {|strio| ... }

stringmode로 만든 새 StringIO 인스턴스를 만들어요. 블록이 없으면 새 인스턴스를 돌려주고, 블록이 있으면 새 인스턴스로 블록을 호출하고 블록의 값을 돌려주며 블록 종료 시 인스턴스를 닫아요.

StringIO.open {|strio| p strio }
# => #<StringIO>

StringIO.new와 관련돼 있어요.

Public Instance Methods

각 메서드의 시그니처와 요약은 다음과 같아요.

binmode → self

self의 데이터 모드를 이진(binary) 모드로 설정해요.

close → nil

읽기·쓰기 모두에 대해 self를 닫아요. 읽기나 쓰기를 시도하면 IOError가 나요.

close_read → nil
close_write → nil

읽기 전용(또는 쓰기 전용)으로 닫아요. 해당 방향의 접근을 시도하면 IOError가 나요.

closed? → true or false
closed_read? → true or false
closed_write? → true or false

닫힘 상태를 돌려줘요.

each_byte {|byte| ... } → self
each_char {|c| ... } → self
each_codepoint {|codepoint| ... } → self
each_line(sep = $/, chomp: false) {|line| ... }   → self
each_line(limit, chomp: false) {|line| ... }      → self
each_line(sep, limit, chomp: false) {|line| ... } → self

블록이 주어지면 스트림에서 남은 각 바이트·문자·코드포인트·줄로 블록을 호출하고 self를 돌려줘요. 블록이 없으면 열거자(enumerator)를 돌려줘요. eacheach_line의 별칭이에요.

eof? → true or false

스트림 끝에 위치하면 true, 아니면 false를 돌려줘요. 읽기용으로 열리지 않았으면 IOError가 나요. eof도 별칭이에요.

external_encoding   → encoding

파일의 인코딩을 나타내는 Encoding 객체를 돌려줘요. 쓰기 모드이고 인코딩이 지정되지 않았으면 nil을 돌려줘요.

fcntl(*args)

NotImplementedError를 던져요.

fileno()

nil을 돌려줘요. IO와의 호환용이에요.

flush()
fsync()

각각 자기 자신(0 또는 self)을 돌려줘요. IO와의 호환용이에요.

getbyte → byte or nil
getc → character or nil

스트림에서 다음 8비트 바이트(또는 문자)를 읽어 돌려줘요.

gets(sep = $/, chomp: false) → string or nil
gets(limit, chomp: false) → string or nil
gets(sep, limit, chomp: false) → string or nil

스트림에서 한 줄을 읽어 돌려주고 $_에 할당해요.

internal_encoding   → encoding

변환이 지정돼 있으면 내부 문자열의 Encoding을, 아니면 nil을 돌려줘요.

isatty()

false를 돌려줘요. IO와의 호환용이에요. tty?도 별칭이에요.

length → integer

버퍼 문자열의 크기를 돌려줘요. size의 별칭이에요.

lineno → current_line_number
lineno = new_line_number → new_line_number

현재 줄 번호를 가져오거나 설정해요.

pid()

nil을 돌려줘요. IO와의 호환용이에요.

pos → stream_position
pos = new_position → new_position

현재 위치(바이트 단위)를 가져오거나 설정해요. tellpos의 별칭이에요.

pread(maxlen, offset)             → string
pread(maxlen, offset, out_string) → string

IO#pread를 참고하세요.

putc(obj)    → obj

IO#putc를 참고하세요.

read([length [, outbuf]])    → string, outbuf, or nil

IO#read를 참고하세요.

readlines(sep=$/, chomp: false)     →   array
readlines(limit, chomp: false)      →   array
readlines(sep, limit, chomp: false) →   array

IO#readlines를 참고하세요.

reopen(other, mode = 'r+') → self

주어진 other(문자열 또는 StringIO)와 mode로 스트림을 다시 초기화해요. IO.new를 참고하세요.

rewind → 0

현재 위치와 줄 번호를 0으로 설정해요.

seek(offset, whence = SEEK_SET) → 0

주어진 정수 offset(바이트)으로 현재 위치를 설정해요. whenceSEEK_SET(0), SEEK_CUR(1), SEEK_END(2) 등을 써요.

set_encoding(ext_enc, [int_enc[, opt]])  → strio

StringIO의 인코딩을 ext_enc로 지정해요. ext_encnil이면 기본 외부 인코딩을 사용해요. int_enc와 선택 해시 optIO와의 API 호환을 위해 무시돼요.

set_encoding_by_bom()

BOM으로 인코딩을 설정해요. 실패하면 nil을 돌려줘요.

size   → integer

버퍼 문자열의 크기를 돌려줘요. length도 별칭이에요.

string → string
string = other_string → other_string

기본이 되는 문자열을 돌려주거나, other_string으로 바꾸고 위치를 0으로 설정해요.

sync → true
sync=(p1)

IO와의 호환용으로 각각 true와 인자 그대로를 돌려줘요.

truncate(integer)    → 0

버퍼 문자열을 최대 integer 바이트로 잘라요. 스트림이 쓰기용으로 열려 있어야 해요.

ungetbyte(byte) → nil
ungetc(character) → nil

스트림에 8비트 바이트(또는 문자·정수)를 다시 밀어 넣어요.

write(string, ...) → integer
syswrite(string)   → integer

주어진 문자열을 기본 버퍼 문자열에 덧붙여요. 쓰기용으로 열려 있어야 해요. 인자가 문자열이 아니면 to_s로 변환돼요. 쓴 바이트 수를 돌려줘요. IO#write를 참고하세요.