FileのスーパークラスのIOについてのtrap::IOも参照してください。
パス名を扱うメソッド(FileTestなど)はパス名の中に"\0"が含まれると その部分までをパスと見なしてしまいます。
path = "/etc\0garbage" p File.exists? path #=> true
これはおそらくそのようなチェックをRubyのソースに 埋め込むのが面倒だから(?)だと思います(邪推。 普通、こんなことしないしね。UNIXのパス名で"\0" はパス名の中に 含めることのできない数少ない文字の1つです 文責-あらい)