「Ruby」参考情報 第5回 Rubyのファイルへの読み込みと書き込みとして、「(1)Rubyのファイル読み込み」「(2)Rubyのファイル書き込み」について紹介。

「Ruby」参考情報 第5回 Rubyのファイルへの読み込みと書き込み

「Ruby」参考情報 第5回 Rubyのファイルへの読み込みと書き込みとして、「(1)Rubyのファイル読み込み」「(2)Rubyのファイル書き込み」について紹介。

■関連する比較ページ

(1)Rubyのファイル読み込み

■読み込み用サンプルファイル

読み込み用サンプルファイル(sample.txt)には、以下の内容が記述されているものとします。

1:犬
2:猿
3:キジ

■1行ずつ読み込む 「each_line」と「foreach」

サンプルコード1

「File.open」でファイルをオープンして、変数「file」にファイルオブジェクトをセットします。

ファイルオブジェクト「file」の「each_line」メソッドで1行ずつ読み込み、変数「file_line_animal」にセットして、出力します。

File.open("sample.txt") do |file|
  file.each_line do |file_line_animal|
    puts file_line_animal
  end
end

サンプルコード2

サンプルコード1の処理を「File.foreach」メソッドでまとめて簡略化できます。

File.foreach("sample.txt") do |file_line_animal|
  puts file_line_animal
end

結果

どちらのコードでも、同じ結果が出力されます。

1:犬
2:猿
3:キジ

■1度で全体を読み込む 「read」

サンプルコード

最初に「read」メソッドで全体を読み込み、「split("¥n")」で改行区切り単位で処理することで、1行ごと処理します。

File.open("sample.txt") do |file|
  file.read.split("¥n").each do |file_line_animal|
    puts file_line_animal
  end
end

結果

1:犬
2:猿
3:キジ

(2)Rubyのファイル書き込み

■書き込み用サンプルファイル

書き込み用サンプルファイル(sample.txt)は、以下の内容が記述されているとします。

1:犬
2:猿
3:キジ

■1行ずつ書き込む 「puts」 ※上書きモード(w)

「File.open」でファイルをオープンします。この時に第2引数として「w」を付けます。これは、書き込みモードを指定することになります。

「puts」メソッドで書き込みます。

サンプルコード

File.open("sample.txt","w") do |file|
  file.puts "A1:ももたろう"
end

結果

A1:ももたろう

上書きモード(w)について

sample.txtに記述されていた「犬」「猿」「キジ」が消えてしまい、「ももたろう」だけになります。

これは、ファイルオープン時に指定した「w」は上書きモード指定であるため、ファイルを空にしてから書き込み処理を行います。

■1行ずつ書き込む 「print」「puts」 ※追記モード(a)

今度は、追記モード(a)でファイルをオープンして、書き込みます。

サンプルコード

File.open("sample.txt","a") do |file|
  file.print "A2:きんたろう"
  file.puts "A3:うらしまたろう"
end

結果

A2:きんたろう
A3:うらしまたろう

追記モード(a)について

※追記モード(a)の場合は、対象ファイルの末尾から追記を行います。

※「print」は改行なし、「puts」は改行あり、で書き込みます。

Ruby最新TOPICS

【講演資料を公開】3/22「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」(2018年04月27日 10:04)

2018年03月22日(木)17:00~18:30 AP品川 9階 にて「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」と題したセミナーを開催しました。 当日は、会場の様子をWebで中継し 遠隔地等ご来場出来ない方にもご参加頂きました。お陰様で、盛況のうちに終了することができました。ありがとうございました。 講...

  • Zabbixカンファレンス2019
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter