先日 ( d:id:Nabetani:20060104:p4 ) の続き。
コメントありがとうございます>なかだ様
で。
私の手元の環境(winXP pro SP2 / ruby 1.8.2 (2004-12-25) [i386-mswin32] ) では、フロッピーディスクを刺していない状態で File.directory?( 'A:' ) を実行すると:
Windows - ディスクがありません
ドライブにディスクがありません。 ディスクをドライブ に挿入してください。
[キャンセル][再実行(T)][続行(C)]
というプロンプトが出てしまいます。
しかも。ここでキャンセルを選んでも続行を選んでも、帰ってくる値は true です。
なかださんのところと何が違うのかわからないんですが(あるいは、1.8.4 で治ってるとか?)私の手元では上記の通りです。
(ここで文体が変わり)
手元で調べてみると:
メソッド | そんなドライブはない | ドライブはあるけどメディアがない | ドライブもメディアもある |
---|---|---|---|
FileTest.directory? | false | true+MB | true |
FileTest.exist? | false | true+MB | true |
FileTest.drive_ready?*1 | false | false | true |
Dir.open | No such file or directory | Invalid argument+MB | Dirオブジェクト |
となっている。返り値と例外をごっちゃにして書いているので要注意。
「+MB」 と書いたのは、メッセージボックスが出るという意味。
というわけで(私の知る限り)先日書いた drive_ready? は必要なのであった。
*1:d:id:Nabetani:20060104:p4 で書いたもの。組み込みではない