とりあえずこの3つ覚えとけ!
- File.read(‘sample.txt’)
- File.write(‘sample.txt’, “書き込み内容”)
- File.write(‘sample.txt’, “追記内容”, mode: ‘a’)
一応紹介しておくが、同じようにRubyでテキストファイルの読み込み、書き込み、追記をしようと思った場合、openメソッドとブロックを利用した方法がある。
こんな感じ。
File.open('sample.txt', '読み書き追記モード指定') do |file|
# 読み書き追記処理
end
でもめんどくさがり私は、自分が覚えやすく使いやすい方法を選択しました。
テキストファイルを読み込む:
textcontent = File.read('sample.txt')
テキストファイルに書き込む:
File.write('sample.txt', "書き込み内容")
テキストファイルに追記する:
「mode: “a”」
File.write('sample.txt', "追記内容", mode: 'a')
# 第3引数に「mode: 'a'」が必要。
めちゃ簡単ですね。
「File.read,File.write」がかなりおすすめです!
とにかく「直感的: メソッドの名前が操作を明確に示しているので、コードが読みやすい。」です。
以降は、個人的にはあまり気にしなくてもよいこと。
注意
注意があるとすれば、どんなものも意味があって存在するわけです。「openメソッドとブロックを利用した方法」にもメリットがあるわけです。
File.readはファイルの全内容をメモリに読み込むため、非常に大きなファイルを読み取る際には注意が必要。実際はシステムのメモリ容量、他の実行中のプロセス、およびオペレーティングシステムの具体的な設定にもよります。
職人のようにログファイルの解析、大規模なデータセットの処理をしない限り、一般的なユーザーの利用においては、テキストファイルが数十メガバイト以上のサイズになることは比較的まれと思います。
よって、一般的なテキストファイルを対象とする場合、File.readやFile.writeを利用しても、パフォーマンスに影響はないと思われます。
仮にサイズの大きなテキストファイルを処理する場合はちょっと遅くなるかもという感じ。
補足
違いと注意点とあまり気にしなくてもよい点
File.openメソッドとFile.read/File.writeメソッドの違いに関して、以下に主な点をまとめます。
書き方の違い:
File.openはファイルを明示的に開き、操作後に閉じる必要があります。ブロックを使用する場合、ファイルはブロックの終了時に自動的に閉じられます。
File.read/File.writeはメソッドが呼び出されると、ファイルは即座に読み込まれたり書き込まれたりします。操作が完了すると自動的にファイルが閉じられます。
File.open:はより詳細な操作や、ファイル内の複数の処理を行う場合に適しています。例えば、一つのopenの中で、ファイルの一部を読み、別の部分に書き込むといったことが可能です。
File.read/File.writeは単一の操作に特化しており、簡潔なコードを書く場合に適しています。
File.openはファイルに対して複数の操作を行いたい、または特定の場所から読み書きを開始したい場合などに使用します。
File.read/File.writeはファイル全体を一度に読み取ったり、新しい内容で上書きしたり、追記したりする際に簡単に使用できます。
File.openはブロックを使用しない場合、closeメソッドを呼び出してファイルを閉じる必要があります。ブロックを使用すると、ブロックの終了時に自動的にファイルが閉じられます。
File.read/File.writeはこれらのメソッドは、操作が完了すると自動的にファイルを閉じるので、明示的にcloseを呼び出す必要はありません。