(マジで)ゼロから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: 広くてすてきな宇宙じゃないか!