TechNote

事務屋のおぼえがき

【Ruby】IO/File周辺

irbによる動作検証。

読み込みについて

FileクラスはIOクラスを継承している。
IO#readは末尾まですべて読み込む。

今回の読み込み対象のファイル
f:id:kojikoji75:20211225123445p:plain


まず、closeで閉じてやる必要がある書き方。

file = File.open('c:/sample/foo.txt')
puts file.read
file.close

f:id:kojikoji75:20211225123429p:plain


ブロック渡しの下記の書き方の場合、勝手にcloseまでしてくれる。

File.open 'c:/sample/foo.txt' do |file|
 puts file.read
end

f:id:kojikoji75:20211225123447p:plain

IO#getsは1行ずつ読み込みながら処理できる。
1行読み込んではアクセス位置を進める。ファイルの終端行ではnilを返す。
f:id:kojikoji75:20211225123442p:plain

このようにも書ける。
f:id:kojikoji75:20211225123440p:plain

f:id:kojikoji75:20211225123438p:plain

書き込みについて

f:id:kojikoji75:20211225123435p:plain
f:id:kojikoji75:20211225123432p:plain

ファイルを開く際のモード

r:読み込みモードで開く
r+:読み書き両用モードで開く
w:新規作成して書き込みモードで開く
w+:新規作成して読み書き両用モードで開く
a:追記書き込みモードで開く
a+:読み込み/追記書き込みモードで開く