Ruby Tips!

RubyのTipsを紹介します

ファイルを開く

Rubyでファイルを開くには、openまたはFile.openを使用する。
第1引数には開くファイルのパスを、第2引数にはフラグを指定する。

第2引数のフラグは以下の文字列または定数の論理和で指定する。

フラグ文字列 意味
r 読み込みモード
w 書き込みモード
a 追記(末尾への書き込み)モード
r+ 読み書きモード(読み書き共に先頭から)
w+ 読み書きモード(ファイルが存在していれば空にする)
a+ 読み書きモード(読み込みは先頭、書き込みは末尾)
b バイナリモード(他のフラグと組み合わせて使用する)

フラグ定数 意味
APPEND 追記モード
BINALY バイナリモード
CREAT ファイルが存在しなければ作成する
DIRECT I/Oキャッシュの最小化
DSYNC データ同期モード
EXCL ファイルが存在したら失敗させる
NOATIME ファイル読み込み時にatimeを更新しない
NOCTTY 自身がTTY制御しないようにTTYを開く
NOFOLLOW ファイルがシンボリックリンクなら例外を発生させる
NONBLOCK ファイルが利用可能でなくてもブロックしない
RDONLY 読み込みモード
RDWR 読み書きモード
RSYNC ファイル読み込み時同期モードで開く
SYNC ファイルを同期モードで開く
TRUNC もしファイルが存在したら空にする
WRONLY 書き込みモード

以下はいずれもカレントディレクトリのファイルfoo.txtを書き込みモードで開き、Hello, World!という文字列を書き込む例である。

open('foo.txt', 'w'){|f|
  f.puts "Hello, World!"
}
File.open('foo.txt', File::WRONLY | File::CREAT | File::TRUNC){|f|
  f.puts "Hello, World!"
}

ファイルの作成と同時にモードを設定したければ、第3引数にモードを指定することができる。
以下の例では、書き込みと同時にモードを700(ユーザのみ読み書き実行可能)に設定している。

open('foo.sh', 'w', 0700){|f|
  f.puts "#!"
  f.puts "echo 'Hello, world!'"
}