IO と同じインタフェースを持った文字列クラスです。
StringIO オブジェクトは大抵の場合 IO オブジェクトと同じ例外を発生させます。 例えば次の例では write は IOError を発生させます。
require "stringio"
sio = StringIO.new("hoge")
sio.close
sio.write("a")
# => in `write': not opened for writing (IOError)
StringIO.new(string = '', mode = 'r+')StringIO.open(string = '', mode = 'r+')StringIO.open(string = '', mode = 'r+') {|io| ... }StringIO オブジェクトを生成します。mode はデフォルトでは読み書き可能に 設定されます。与えられた string がフリーズされている場合には、 mode はデフォルトでは読み取りのみに設定されます。
ブロックを与えた場合は StringIO オブジェクトを引数としてブロックを評価します。
require 'stringio'
io = StringIO.new("foo")
p io.getc # => 102
p io.pos # => 1
p io.size # => 3
io << "bar"
p io.size # => 4
io.rewind
p io.gets # => "fbar"
StringIO.open("hoge"){|io|
p io.string # => "hoge"
}
stringIOバッファ(文字列)を返します。
string= bufIOバッファを buf に変更し、buf を返します。これ以前の
バッファは捨てられます。StringIO は読み書き両用になります。
buf がフリーズされている場合には、読み取り専用になります。
buf が nil の場合は、StringIO への読み書きは禁止されます。
pos と lineno は 0 にセットされます。
self << objIO#<< と同様です。obj を pos の位置に書き込みます。 必要なら obj.to_s を呼んで 文字列に変換します。 self を返します。
binmode何もせずに self を返します。
closeclose します。IO#close と同じように読み書きが禁止されます。
close_readIO#close_read と同様です。読み取りを禁止します。
close_writeIO#close_write と同様です。書き込みが禁止されます。
closed?IO#closed? と同様です。
sio = StringIO.open("hoge")
p sio.closed? # => false
sio.close_read
p sio.closed? # => false
sio.close_write
sio.closed? # => true
closed_read?読み取りが禁止されているなら true を返します。
closed_write?書き込みが禁止されているなら true を返します。
each(sep_string=$/){|line| ... }each_line(sep_string=$/){|line| ... }IO#each と同様です。
each_byte{|byte| ... }IO#each_byte と同様です。
eofeof?pos が文字列の終端にあれば true を返します。
fcntl例外 NotImplementedError が発生します。
fileno何もせず nil を返します。
flush何もせずに self を返します。
fsync何もせずに 0 を返します。
getcIO#getc と同様です。
gets(sep_string = $/)IO#gets と同様です。$_ に読み込んだ行がセットされます。
isatty何もせず false を返します。
linenolineno=IO#lineno と同様です。
pathinspect と同じです。
pid何もせず nil を返します。
postellpos = (n)IO#pos と同様です。
print([obj, ...])IO#print と同様です。
printf(format_string [, obj, ...] )IO#printf と同様です。
putc(obj)IO#putc と同様です。与えられた obj を返します。
puts(obj, ...)IO#puts と同様です。
read([integer [, buffer]])IO#read と同様です。
readcharIO#readchar と同様です。
readline(sep_string = $/)IO#readline と同様です。
readlines(sep_string = $/)IO#readlines と同様です。
readpartial([integer [, buffer]])IO#readpartial と同様です。
reopen例外 NotImplementedError が発生します。
rewindIO#rewind と同様です。
seek(n, whence)IO#seek と同様です。
sizelength文字列の長さを返します。
sync何もせずに 0 を返します。
sync= bool何もせずに bool を返します。
sysread([integer [, buffer]])StringIO#read と同じです。
syswrite(obj)StringIO#write と同じです。
truncate(n)n が self.size より小さい場合にはバッファのサイズを n に切り詰めます。 n が self.size より大きい場合にはバッファのサイズを n に拡大します。
tty?何もせず false を返します。
ungetc(c)c は Fixnum です。 pos を 1 減らしてからキャラクターコードが c の文字を書き込みます。この時 pos は 1 増えません。 pos が size よりも大きい場合は、リサイズして新しく加えられたバッファを 0 で 埋めてから pos を 1 減らしてキャラクターコードが c の文字を書き込みます。 この時も pos は 1 増えません。nil を返します。
s = StringIO.new("hoge")
s.pos = 1
s.ungetc(0x48)
p s.string #=> "Hoge"
p.pos #=> 0
s = StringIO.new("hoge")
s.pos = 8
s.ungetc(0x41)
p s.string #=> "hoge\000\000\000A"
p.pos #=> 7
write(obj)IO#write と同様です。書き込まれた文字列の長さを返します。