2016-07-01 3 views
1

ターミナルでこの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 

答えて

2

ストリームを閉じてデータを保存する必要があります。

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欠けている

1

を役に立てば幸い:

f = File.open("hello.txt", 'w') 
f.puts "Hello World" 
f.close 
text = IO.read("hello.txt") 
puts "it works" if text == "Hello World" 
3

注意すべきいくつかのことを。

1)Fileを使用してファイルに書き込むとき、効率的にデータをバッファリングするので(ファイルシステムに繰り返し書き込むのではなく)、flushハンドルを使用して実際にバッファリングされていることを確認しますデータ。 flushを呼び出すか、ハンドルを閉じることによって暗黙的に呼び出すことで、これを明示的に行うことができます。

2)あなたがgetsを入力したときやファイルシステムから読み込んだときには、末尾の空白文字はstripにあるのが普通です。 text.strip == "Hello World"

3)ではなく、同じファイルに二つのハンドルを開くよりも、(FileIO)を介して、あなたは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" 
+0

私は、ファイルfを読むために= File.open( "TEXT.TXT"、 'R') f.rewind テキストを、これを行うにしたい場合= f.read.strip if text == "こんにちは" puts "それは動作します" end –

関連する問題