【Ruby】ファイルの読み書き

組み込みライブラリであるFileクラスを使ってみたいと思います。とりあえずリファレンスを覗いてる。class File (Ruby 2.1.0)

…さっぱりわからん。

ちらっと見えた「特異メソッド」という言葉もわからんのでとりあえず調べる。

特異クラス・特異メソッド・メソッドの種類 Ruby – Qiita

特異メソッドはオブジェクトに紐付けられたメソッドらしい。じゃあクラス内でしか使えないんじゃない?よくわからん。

参考URL

とりあえず読み書き方法を調べる。

逆引きRuby – ファイルアクセス

File の読み書き – RubyCocoa メモ

Rubyでファイルに追記をする方法 – Qiita

それぞれ読み込み、読み書き、追記の方法について書いている記事。

とりあえずコード

Fileクラスのリファレンス見ればわかる通りnewメソッドの引数は3つあります。一つ目はパス、二つ目は読み書きのモード、三つ目はよくわからない。

二つ目の読み書きモードについては色々書いたほうが良さそう。

読み書きモードについて

まあ参考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)このページの「組み込みライブラリ」とか「標準添付ライブラリ」とかで使いたいクラスを見る。

「インスタンスメソッド」は「変数.メソッド名」で使用できる。

「特異メソッド」の目的の機能っぽい名前をクリックするとメソッドの説明に飛ぶ。「~と同じです」とモジュール・クラスメソッドが書かれているのでそれを使う。

今はこれぐらいしかわかりません。モジュールメソッドの一覧とか無いのでしょうか?

終わりに

ファイル操作も割りと簡単で安心しました。

次回は文字列操作を色々やってみたいと思います。今現在、文字列の内容で判定する処理とか書けそうにありませんし。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする