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メソッドがあり、ファイルを全て読み込み配列で返すメソッドもあるので注意。