きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

消えないファイル

ファイルなんだけど、
isFile() false
isDirectory() false
exists() false
と、ある意味すごい。

ディレクトリのFileオブジェクト作って、
listFiles()で得たFile達です。

UTF-8のマルチバイトなファイル名で、
Solaris上に作ってるのがまず変。

Javaで消そうと頑張ったが、
どうやっても消せなかった。

これはエンコードの問題だろうが、
java.io.Fileのせいか、
環境非依存になれてないJavaのせいか、
エンコードに無頓着な設計者のせいか、
しかるべき時期に試験してないせいか。

UTF-8のファイル名で
あああ.txt はJavaで消せない
ああ.txt はJavaで消せる

SJISの状態のTeraTermにて
ls -b で確認してみた。
きっと、たまたま表現出来る文字化けなら
消せてしまうということだな。

ファイル名はマルチバイトを普通使わない。
誰もが危険を避ける。
誰だ、避けなかったヤツは。。。

疲れた。
ふざけた仕様を変えないなら、
シェルで消してください。

不可視なクラスUnixFileSystemの挙動も知りたかったが、さすがにSecurityManagerに怒られた。

確かめ方も、Main.class作って、
ftpSolarisにあげて、
java -classpath ./ Main testDirName
と、超手抜き。
もちろんJavaAPIオンリーだ。
文字化けファイル名は
TeraTermの設定と、touchで作った。

File絡みは僕にはどうにも出来ん。
そのクラス名を聞くと、
まず「どうせ環境依存でしょ」と思う。
オープンソースとか関係なく、
Javaで出来るかってのも試そうぜ。