消えないファイル
ファイルなんだけど、
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作って、
ftpでSolarisにあげて、
java -classpath ./ Main testDirName
と、超手抜き。
もちろんJavaAPIオンリーだ。
文字化けファイル名は
TeraTermの設定と、touchで作った。
File絡みは僕にはどうにも出来ん。
そのクラス名を聞くと、
まず「どうせ環境依存でしょ」と思う。
オープンソースとか関係なく、
Javaで出来るかってのも試そうぜ。