2016-06-19 10 views
0

データ(整数)をstdout.txtというファイルに出力したい。 問題は、私のコードが、ファイルにある既存のデータを行ごとに追加するのではなく、ファイル に上書きしているようです。ファイルからのruby出力。

if failPlaces.empty? == false 
    puts "position: #{failPlaces.last}" 
    output = File.open("stdout","w") 
    output << "#{failPlaces.last}\n" 
    output.close 
else 
    puts "He Passes it!!!!!!!!!!!!!!!!!" 
    output = File.open("stdout","w") 
    output << "Pass\n" 
    output.close 
end 

なぜ私のコードがこのように動作し、解決策があるのか​​理解したいと思います。

+0

のリストでは、' File.open'にブロックを渡すことによってファイル出力を簡素化することができます{|出力|出力<< "#{failPlaces.last} \ n"} '。あなたのファイルはあなたのために自動的に開閉されます。 –

+0

ありがとうKeith、それはより良く見えます。 –

答えて

1

あなたがそのように書くことができますstdout.txtという名前のファイルが(aではなくw使用することを忘れないでください)を考えます。 wはファイル内のすべてを上書きしますが、aはファイルが存在する場合は追加し、それ以外の場合は新しいファイルを作成します。 `File.open( "標準出力"、 "W"):ここでは

がところでRuby IO modes

failPlaces = [1, 2] 

if failPlaces.empty? 
    puts "He Passes it!!!!!!!!!!!!!!!!!" 
    output = File.open('stdout.txt', 'a') 
    output << "Pass\n" 
    output.close 
else 
    puts "position: #{failPlaces.last}" 
    output = File.open('stdout.txt', 'a') 
    output << "#{failPlaces.last}\n" 
    output.close 
end 
+0

ありがとう、私は(追加)を使用する必要がありますが、私はw(上書き)を使用していた。大きな助け!ありがとう! –

関連する問題