- - PR -
Linux上でファイル名がMS932のファイルを開く
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-30 16:23
インギさん、ありがとうございます。
こういう実験結果もあります。 http://www.simeji.com/wiki/index.php?Java%A4%CE%CD%AB%DD%B5 本当のところどうなんでしょう? | ||||
|
投稿日時: 2007-04-02 15:26
あしゅさん、インギさん、皆さん、お世話になります。
環境で解決できることは環境で解決する という、鉄則はわかりつつ、 環境で解決するまでに少し時間がかかりそうなので、 少し悪あがきをしてみようかと思います。 日本語なのはファイル名だけで、途中のパスには日本語は含まれないので、 親ディレクトリのFileオブジェクトを取得して、 File#listFiles()で子ファイルのリストを取ってみようと思います。 ねらいは、子ファイルのFileオブジェクトのgetName()は、何を返すのか? (Shift_JISか、UTF-8か、EUC-JPか) そのFileオブジェクトでファイルが開けるか? ということです。 そこで、教えていただけたらありがたいのが、 デフォルトエンコーディングと、ファイル名のエンコーディングが違うという 環境をどうやって作るかということですが、 手元にあるのはWindowsXPとMac OS Xだけです。 他のOSをインストールしている時間はとれません。 WindowsXPはともかく、Mac OS XはBSDベースなのだから何か方法がありそうに 思います。 よろしくお願いいたします。
JDK1.1.8のころは、JavaもShift_JISとMS932を区別していなかったようですね。 | ||||
|
投稿日時: 2007-04-02 17:54
原則として、環境で解決すべき問題であり、アプリケーションで解決してはいけない問題だとは思います。 しかし、Java に限らず、たまに、アクセスできない・消せない、といったファイルが出来て困ることがありますが、こういう時にはフォルダー内のファイルを列挙する、ということで対処できる場合もあります。 Java だと、 http://java.sun.com./javase/ja/6/docs/ja/api/java/io/File.html#listFiles() など(引数にフィルターを持てるメソッドもある)のような API で、一旦、目的とするファイルを入れているフォルダー内のファイルをすべて列挙し、その後、あらためてファイル名で合致するファイルを特定するわけです。 ただ、これをやっても、ファイル名で探せなかったり、ファイルを特定できてもいざアクセスしようと思ってもやっぱりアクセスできなかった、みたいなことはあるかもしれませんが、そうなったら諦めるしかないかもしれません。 |