組み込みライブラリであるFileクラスを使ってみたいと思います。とりあえずリファレンスを覗いてる。class File (Ruby 2.1.0)
…さっぱりわからん。
ちらっと見えた「特異メソッド」という言葉もわからんのでとりあえず調べる。
特異クラス・特異メソッド・メソッドの種類 Ruby – Qiita
特異メソッドはオブジェクトに紐付けられたメソッドらしい。じゃあクラス内でしか使えないんじゃない?よくわからん。
参考URL
とりあえず読み書き方法を調べる。
それぞれ読み込み、読み書き、追記の方法について書いている記事。
とりあえずコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
filename = "test.txt" bool = File.exist?(filename) #新規作成読み書き両用モード #この時点でファイルが存在しなければ新規作成される file = File.open(filename, "w+") #ファイルへの書き込み unless(bool) file.write("1度目の書き込み") else file.write("何度目かの書き込み") end #ファイルを閉じる file.close #ファイルを開く file = File.open(filename) #ファイルの読み込み file.each do |line| p line end #インスタンスメソッド・モジュールメソッド p "ファイルサイズ:#{FileTest.size?(filename)}byte" p "ファイルサイズ:#{file.size}byte" p "最終アクセス時刻:#{file.atime}" p "オープン時に使用したパス:#{file.path}" p "絶対パス:#{File.expand_path(filename)}" p "ファイルのタイプ:#{File.lstat(filename).ftype}" #ファイルを閉じる file.close |
二つ目の読み書きモードについては色々書いたほうが良さそう。
読み書きモードについて
まあ参考URL見ればわかるのですが。二つ目のURLから引用させてもらうと、
r: 既存のファイルを読み込み専用で
r+: 既存のファイルを読み書き両用で
w: 新規のファイルを書き込み専用で
w+: 新規のファイルを読み書き両用で
a: 新規/既存のファイルを追加書き込み専用で
a+: 新規/既存のファイルを追加書き込み/読み込み両用で
このようになります。
r/r+の場合は、既存のファイルが存在しない場合にopenメソッドでエラーを投げます。
w/w+の場合は、ファイルが存在しなくても新規ファイルを作成するためエラーを投げません。writeするたびに内容がすべて書き換えられます。
a/a+の場合は、writeメソッドを使用してもputsメソッドを使用しても常にファイルの末尾に追記されます。
このモードはFileオブジェクトを作成した後でもインスタンスメソッドのchmodで変更可能です。
Rubyリファレンスの見方について
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.1.0)このページの「組み込みライブラリ」とか「標準添付ライブラリ」とかで使いたいクラスを見る。
「インスタンスメソッド」は「変数.メソッド名」で使用できる。
「特異メソッド」の目的の機能っぽい名前をクリックするとメソッドの説明に飛ぶ。「~と同じです」とモジュール・クラスメソッドが書かれているのでそれを使う。
今はこれぐらいしかわかりません。モジュールメソッドの一覧とか無いのでしょうか?
終わりに
ファイル操作も割りと簡単で安心しました。
次回は文字列操作を色々やってみたいと思います。今現在、文字列の内容で判定する処理とか書けそうにありませんし。