ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

IOクラス

IOクラスオブジェクト

STDOUT : 標準出力
STDIN : 標準入力
STDERR : 標準エラー

ファイルを開く

io = open('README.md')
 => #<File:README.me>
  1. ファイルオブジェクト返す

ファイル名の代わりに|に続いてコマンドを実行することも可能

io = open('| ls -la')
 => #<IO:0x100d42af0>
puts io.read
...
  1. IOオブジェクトを返す

標準出力に書きこむ

STDOUT.write('Tis is Standard Output')

IOからの入力

IO.read / read
IO.foreach / each / each_lines / lines : 各業をブロックに渡す
readlines : ファイル全体を配列で返す
readline / gets : 1行づつ読み取る
bytes / each_byte
getbyte / readbyte
chars / each_char
getc / readchar

IO.read("README.md", 5) #5byte 読み取る

IO.foreach("README.md"){|line| puts line}

open("README.md").readlines
 => ["first\n", "secend\n", ....

io = open("README.md")
io.gets
 => "first"
io.gets
 => "second"

IOへの出力

write
puts
print
printf
ptc
<<
flush : ファイルへの書き込み実施

IOオブジェクトの状態を調べる

stat
closed?
eof / eof?
lineno : getsメソッドで呼び出された回数
sync

ファイルポインタの移動

rewind : 先頭に移動しlinenoを0にする
pos : ファイルポインタの取得・設定
seek : 指定した数だけファイルポインタを2番目の引数の位置から移動する

io = open('sample.txt')
io.seek(10)
io.seek(-10, IO::SEEK_END)
  1. IO::SEEK_SET : ファイルの先頭から
  2. IO::SEEK_CUR : 現在のファイルポインタから
  3. IO::SEEK_END : ファイルの末尾から