StringIO
StringIO
StringIO는 문자열을 대상으로 하는 IO 스트림이에요. IO와 비슷한 방식으로 접근할 수 있지요. 문자열을 파일인 것처럼 읽고 쓸 수 있게 해 줘요.
출처: Ruby 3.3 API
본문
StringIO는 Object를 상속하고 Enumerable, IO::generic_readable, IO::generic_writable을 포함해요. 예제들은 StringIO가 require 됐다고 가정해요.
require 'stringio'
Constants
VERSION
Public Class Methods
new(string = '', mode = 'r+') → new_stringio
string과 mode로 만든 새 StringIO 인스턴스를 돌려줘요. 단, string이 frozen이면 mode 기본값이 'r'이 돼요.
strio = StringIO.new # => #<StringIO>
strio.close
더 이상 필요 없을 때 인스턴스를 닫아야 해요. 블록을 받아 자동으로 닫는 StringIO.open과 관련돼 있어요.
open(string = '', mode = 'r+') {|strio| ... }
string과 mode로 만든 새 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)를 돌려줘요. each는 each_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
현재 위치(바이트 단위)를 가져오거나 설정해요. tell도 pos의 별칭이에요.
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(바이트)으로 현재 위치를 설정해요. whence는 SEEK_SET(0), SEEK_CUR(1), SEEK_END(2) 등을 써요.
set_encoding(ext_enc, [int_enc[, opt]]) → strio
StringIO의 인코딩을 ext_enc로 지정해요. ext_enc가 nil이면 기본 외부 인코딩을 사용해요. int_enc와 선택 해시 opt는 IO와의 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를 참고하세요.