2012-03-01 6 views
1

もう1つは愚かな疑問ですが、明確な例は見つかりませんでした。ファイルからIOオブジェクトを作成する方法は?

は私がactually its the new function in this class、関数のパラメータとしてIOオブジェクトが必要:だから

irb(main):001:0> f= File.open("result.txt","w") 
=> #<File:result.txt> 
irb(main):002:0> i=IO.new(f.to_i,"w") 
=> #<IO:0x3b5cb90> 
irb(main):003:0> i.write "hello the world" 
=> 15 
irb(main):004:0> i.close 
=> nil 
irb(main):005:0> f.close 
Errno::EBADF: Bad file descriptor - result.txt 
     from (irb):5:in `close' 
     from (irb):5 
     from :0 

:IOは後に何かを書いたように、ファイル記述子を使用しているとき、私はこの方法を使用しますが、いくつかの問題だ

私は一度だけ、または、一度閉じる必要がありますか?これを行う標準的な方法がありますか?

答えて

2

FILEは、あなたの場合はIO

irb(main):001:0> File.superclass 
=> IO 

のサブクラスであり、iとfは同じオブジェクトを参照してください。したがって、観察。 TestRunnerのFileオブジェクトを使用できます。

File.open("result.txt", 'w') do |f| 
    t = TestRunner.new(your_suite, NORMAL, f) 
    t.start 
end 

これは、オブジェクトIO result.txtファイルを使用してテスト実行を開始します:

1

あなたはこのような何かを行うことができませんでした。例外が発生しても自動的にファイルを閉じます。

+0

ありがとう、私は愚かな...なぜこのサンプルを見た後に忘れて...ありがとう! –

関連する問題