Fileクラス
ファイルオープン
file = File.open('README.md') => #<File:README.md> ile.read => "This is Readmi file\n\n" file.close => nil File.open('README.md') {|file| file.read}
openメソッドの2番目の引数
"r" : 読み込みモード "w" : 書き込みモード,既にあればファイルサイズを0にする "a" : 追記モード "r+" :読み込み/書き込み用 : 元の内容を読み取り、書き換える事が出来る "w+" : 読み込み/書き込み用 : 元の内容が削除される "a+" : 読み込み/追加書き用、元の内容に追記が出来る(書き換えは出来ない) "rb" : バイナリ読みモード、WindowsOSの場合、違いが発生する
- テキストモード : 文字を表示する時に"\n"を"\r\n"にする。入力する時に"\r\nを"\n"にする
- バイナリモード : 改行文字の変換をおこなわない。0x1aをEOF(ファイルエンド)として扱わない
改行文字
Windows系 : CR+LF Unix系 : LF
ファイルの属性
File.basename : ファイル名を返す、引数2に".*"を指定すると拡張子を除いたファイル名を返す File.dirname File.extname File.split : 指定されたパスからディレクトリ名とファイル名を配列で返す File.stat : ファイルの属性 File.lstat : ファイルの属性 File.atime : 最終アクセス時間 File.ctime : 状態変更時間 File.mtime : 最終更新時間
例
File.split("/tmp/test/mytest.rb") => ["/tmp/test", "mytest.rb"]
インスタンスからのメソッド
path : ファイルを開いた時のパス lstat : ファイルの属性 atime : 最終アクセス時間 ctime : 状態変更時間 mtime : 最終更新時間
ファイルをテストする
File.exists? File.file? File.directory? File.symlink? File.executable? File.readable? File.writable? File.size
ファイルの属性を設定
File.chmod(0644,'README.md') File.chown(501, 20, 'README.md')
ファイルの最終アクセス時間、更新時間を設定する
File.utime(Time.now, Time.now, 'README.md')
絶対パスに展開
File.expand_path('README.me')
join
ファイルセパレータを設定する
File.join("/", "user", "bin") => "/user/bin"
その他メソッド
delete / unlink truncate rename
例
File.delete('README.md') File.truncate('README.md', 0) File.rename('README.md', 'READ_ME.md')
- truncateは引数2もバイト数分切り詰める