Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Ruby辞典

  1. トップページ
  2. Ruby辞典
  3. File.read / write / open

File.read / write / open

ファイルの読み書きを行うメソッドです。『File.read』で全文を読み込み、『File.write』で書き込みができます。

構文
# ファイルの内容をすべて文字列で読み込みます。
内容 = File.read("ファイルパス")
内容 = File.read("ファイルパス", encoding: "UTF-8")

# ファイルに文字列を書き込みます(既存の内容は上書き)。
File.write("ファイルパス", 内容)

# ファイルを開いてブロック内で操作します(自動でクローズ)。
File.open("ファイルパス", "モード") do |f|
  # ファイル操作
end

# 行ごとに読み込みます。
File.foreach("ファイルパス") { |行| 処理 }
オープンモード一覧
モード概要
"r"読み込み専用で開きます(デフォルト)。ファイルが存在しない場合はエラーになります。
"w"書き込み専用で開きます。ファイルが存在する場合は内容を削除します。
"a"追記モードで開きます。ファイルの末尾に内容を追加します。
"r+"読み書き両用で開きます。ファイルが存在しない場合はエラーになります。
"w+"読み書き両用で開きます。ファイルが存在する場合は内容を削除します。
サンプルコード
# ファイルに書き込みます。
File.write("sample.txt", "こんにちは、Ruby!\n1行目のテキストです。\n")
puts "書き込み完了"

# ファイルの内容を読み込みます。
内容 = File.read("sample.txt")
puts 内容

# File.open でブロックを使って安全に操作します。
File.open("log.txt", "a") do |f|
  f.puts "#{Time.now}: ログを追記しました。"
end

# 行ごとに読み込んで処理します。
File.open("sample.txt", "r") do |f|
  f.each_line.with_index(1) do |行, 番号|
    puts "#{番号}行目: #{行.chomp}"
  end
end

# foreach で行ごとに処理します(ブロックなしで列挙子を返す)。
行数 = File.foreach("sample.txt").count
puts "行数: #{行数}"
概要

Rubyのファイル操作は『File』クラスを通じて行います。小さなファイルなら『File.read』・『File.write』が最も簡潔です。ブロック付きの『File.open』は処理が終わると自動的にファイルをクローズするため、ファイルの閉じ忘れを防げます。

ブロックなしで『File.open』を使った場合、必ず『close』を呼び出す必要があります。ファイルを閉じないとリソースが解放されず、大量のファイルを扱う場合に問題が発生します。大きなファイルを一括で読み込む際はメモリ消費が増えるため、『foreach』で行ごとに処理することを検討してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。