(マジで)ゼロからRubyする編  〜File.open(書き出し)〜

File.openメソッドを使って、ファイルの書き出しメソッドを作ってみる。
前回作ったtextlineメソッドに、第2引数に write_filename を追加。

$KCODE="sjis"

def textline(read_filename,write_filename)
    #Filename=read_filename
    data=Array.new
    n=0
    
    file=File.open read_filename
    file.each_line do |line|
      line2=line.chomp
      data[n]=(n+1).to_s + ': '+line2
      n+=1
    end
    
    read_text=data
    file=File.open write_filename, 'w' do |file|
      file.write read_text
      puts(data)
      file.close   
    end
end 

実行結果(テキストファイル上の表示)

1: 空を見上げてごらん。2: 広くてすてきな宇宙じゃないか!

コマンドプロンプト上の実行結果(なんで表示が違うんだ?)

1: 空を見上げてごらん。
2: 広くてすてきな宇宙じゃないか!

ちなみにputsをpにした場合の実行結果

#=>["1: 空を見上げてごらん。", "2: 広くてすてきな宇宙じゃないか!"]

data=Array.newで作成したデータに、きちんと格納されてるね。

data[0]=>"1: 空を見上げてごらん。"
data[1]=>"2: 広くてすてきな宇宙じゃないか!"




補足説明
Fileクラスのopenメソッドで、write_filename ファイルを開く。


ファイルの読み込み時に省略していた、openメソッドの第2引数に、書き出しモードの'w'を使用する。
この'w'は、書き出しをする為のファイルがない場合は、自動的にファイルを作成してくれる。
でも、既に書き出し用のファイルが存在する場合は、ファイルを上書きして作成される。

file=File.open write_filename, 'w' do |file|

ちなみに、ファイルの上書きをせず、既存明細に追加をしたい場合は、'a'を使う。

file=File.open write_filename, 'a' do |file|

実行結果

1: 空を見上げてごらん。2: 広くてすてきな宇宙じゃないか!1: 空を見上げてごらん。2: 広くてすてきな宇宙じゃないか!