私はRubyを学んでいて、現在ファイルの読み書きをいじっています。ファイル「filename」を作成すると、.write() メソッドで書き込むことができます。ただし、 .read() を実行した後に再度開かないと、コンテンツを端末に出力できません (8 行目: を参照puts write_txt.read()
)。行 8 を複数回実行しようとしましたが、空白行が出力されるだけです。8 行目がない場合は、puts txt.read()
単純に空白行を出力します。次のコードは、8行目なしでも機能しますputs
(単純にwrite_txt.read()
)
# Unpacks first argument to 'filename'
filename = ARGV.first
# Lets write try writing to a file
write_txt = File.new(filename, 'w+')
write_txt.write("OMG I wrote this file!\nHow cool is that?")
# This outputs a blank line THIS IS THE LINE IN QUESTION
puts write_txt.read()
txt = File.open(filename)
# This actually outputs the text that I wrote
puts txt.read()
なぜこれが必要なのですか?明らかに書き込まれたファイルが、少なくとも 1 回空白として読み取られた後、再び開かれるまで空白として読み取られるのはなぜですか?