- ベストアンサー
Win環境での隠しファイルの扱い方法
- Win環境でのファイル属性を利用した隠しファイルの扱い方法について説明します。
- java.io.FileクラスのisHiddenメソッドを使用することで、ファイルが隠しファイル属性かどうかを判別できます。
- しかし、org.apache.commons.io.FileUtilsなどを使用しても隠しファイルの作成や変更がうまくできないようです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Windows限定でしたら、Runtime#exec()でattrib.exeを呼べばよいかと思います。 //隠し属性設定メソッド public static void setHidden(String filename) { String cmd = "attrib.exe +h " + filename; Process p = Runtime.getRuntime().exec(cmd); p.waitFor(); } #動作確認をしていないので、ミスしてるかもしれません。
その他の回答 (1)
- gimmick
- ベストアンサー率49% (134/270)
>でもできれば、直接コマンドを実行してしまうのではなく、JavaのVMを介してそれぞれの環境に対して影響を与えるような記述ができればいいなと思っています…。 多分ですが、ファイル属性を変更するような機能はJavaでは提供されていないと思います。 理由はおそらく、ファイル属性自体がファイルシステムに大きく依存するからでしょう。 例えば、Javaで隠し属性を設定するメソッドが提供されたとして、UNIX環境でどういう動作になるのが 妥当なのか、私には見当がつきません。(ファイル名の頭に無理やりドットを付けるとか?) どうしてもプロセス起動を避けたいということでしたら、JNIを使ってネイティブメソッドを呼び出す形に なるかと思います。(面倒なので、お勧めはしませんが…) 例えば、Windowsでファイル属性を設定する場合、「Win32APIのSetFileAttributes()を呼び出す ような関数をCかC++で書いてDLL化しておき、Java側でDLL内の関数を呼び出す」といった処理になります。 JNIについては参考URLを見てください。
お礼
やっぱりそうですよね…。 ありがとうございました。
お礼
なるほど。 ちと乱暴な気もしますが実現できました。 ありがとうございます。 でもできれば、直接コマンドを実行してしまうのではなく、JavaのVMを介してそれぞれの環境に対して影響を与えるような記述ができればいいなと思っています…。 やっぱりそれは無理ということなんでしょうか。