ファイルを開く
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!'" }