ターミナルでこのRubyコードを実行すると、コンソールに「動作しています」というメッセージは表示されません。このコードで何が問題になっていますか?Rubyターミナルコードが動作しない
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
ターミナルでこのRubyコードを実行すると、コンソールに「動作しています」というメッセージは表示されません。このコードで何が問題になっていますか?Rubyターミナルコードが動作しない
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
ストリームを閉じてデータを保存する必要があります。
f = File.open("hello.txt", "w"){|file| file << "Hello World"}
text = IO.read(f.path)
if text == "Hello World"
puts "it works"
end
私は、これはあなたがf.close欠けている
を役に立てば幸い:
f = File.open("hello.txt", 'w')
f.puts "Hello World"
f.close
text = IO.read("hello.txt")
puts "it works" if text == "Hello World"
注意すべきいくつかのことを。
1)File
を使用してファイルに書き込むとき、効率的にデータをバッファリングするので(ファイルシステムに繰り返し書き込むのではなく)、flush
ハンドルを使用して実際にバッファリングされていることを確認しますデータ。 flush
を呼び出すか、ハンドルを閉じることによって暗黙的に呼び出すことで、これを明示的に行うことができます。
2)あなたがgets
を入力したときやファイルシステムから読み込んだときには、末尾の空白文字はstrip
にあるのが普通です。 text.strip == "Hello World"
3)ではなく、同じファイルに二つのハンドルを開くよりも、(File
とIO
)を介して、あなたはw
からw+
に切り替えることにより、単一の読み取り/書き込みストリームを開くことができます:なしあなたの平等の評価が失敗します。その後、正しい位置に巻き戻すことができます。ここで
はそのアプローチがどのように見えるかです:
f = File.new("hello.txt", 'w+')
f.puts "Hello World"
f.rewind
text = f.read.strip
puts "It works" if text == "Hello World"
私は、ファイルfを読むために= File.open( "TEXT.TXT"、 'R') f.rewind テキストを、これを行うにしたい場合= f.read.strip if text == "こんにちは" puts "それは動作します" end –