アウトプットの部屋

エンジニアになるためのアウトプット

rubyのファイルモードについて

File.openメソッドは、引数を使ってファイルを読み込んだり書き込んだりできます。 仮にsample.txtの中身がrubyと書かれているとします。

"r"は読み込みモード

"w"は書き込みモードで、既存ファイルは空にして書く。

"a"は追記モードで、ファイルの末尾に追加される。

それぞれに"+"がつくと両用モードになり、3つすべてが読み書きモードになる。

"r+"は、ファイルの読み込み位置が先頭。

"w+"は、"r+"と同じだが既存ファイルは空になる。

"a+"は、ファイルの読み込み位置が先頭に、書き込み位置が末尾になる。

File.open("sample.txt","r"){|text|
    text.read
}
#=>"ruby"

File.open("sample.txt","w+"){|text|
    text.write("python")
}
#=>6       (ファイルの中身は"python"に書き換わっている)

任意の位置でファイルを書き換える

"r+"とseekメソッドを使うと、ファイルの編集ができます。

File.open("sample.txt","r+"){|text|
    text.seek(2,IO::SEEK_SET)
    text.write("abc")
    text.seek(0,IO::SEEK_SET)
    text.read
}
#=>"ruabc"

最初のseekメソッドは、「先頭を0として2番目の位置を指定」という意味になる。他に IO::SEEK_CUR(現在の位置から)、IO::SEEK_END(末尾から)などがある。

readlineメソッドという、1行読み込むメソッドなどもある(getsメソッドも同じ)。

また似ているものでreadlinesメソッドがあり、ファイルを全て読み込み配列で返すメソッドもあるので注意。