jFD開発したりしなかったり日誌(2006-05-25)Fileオブジェクトのお話
なんか変な感じだなあ。
File file1 = new File("test.txt"); File file2 = new File("TEST.TXT"); System.out.println(file1.equals(file2));
のようなプログラムを用意しWindows,UNIX,MacOSXのそれぞれのプラットフォームで実行してみたそうだ。
WindowsとMacOSはファイル名の大文字小文字は区別しない仕様なので3行目はtrueが返って良さそうなものだが、MacOSの場合falseが返るという。UNIXでは大文字小文字を区別するのでfalseが返って正解なのだが。
そもそも、MacOSはUNIXベースであるのでVMもUNIXのものから派生して作ってあると想像するわけでその作業での漏れということなんだろうなと思う。
たまにはJavaVMもバグっぽいのがあるというお話でした。
プラットフォームによってファイル名の大文字小文字を区別するかどうかという話はあるわけで一つコードを書けばほとんどのプラットフォームで動いてしまうJavaだけにそのプラットフォームはファイル名の大文字、小文字を区別するかどうかという判断はいったいどうしたらいいのだろうか?と疑問は残るばかりだ。
まあ、あらかじめサーバに指定されているOSが指定されているようなサーバーサイドプログラミングばかりしている僕みたいな人はどうでもいい話であったりもするのだが。