• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:隠しファイルの扱い)

Win環境での隠しファイルの扱い方法

このQ&Aのポイント
  • Win環境でのファイル属性を利用した隠しファイルの扱い方法について説明します。
  • java.io.FileクラスのisHiddenメソッドを使用することで、ファイルが隠しファイル属性かどうかを判別できます。
  • しかし、org.apache.commons.io.FileUtilsなどを使用しても隠しファイルの作成や変更がうまくできないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

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(); } #動作確認をしていないので、ミスしてるかもしれません。

arakororin
質問者

お礼

なるほど。 ちと乱暴な気もしますが実現できました。 ありがとうございます。 でもできれば、直接コマンドを実行してしまうのではなく、JavaのVMを介してそれぞれの環境に対して影響を与えるような記述ができればいいなと思っています…。 やっぱりそれは無理ということなんでしょうか。

その他の回答 (1)

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.2

>でもできれば、直接コマンドを実行してしまうのではなく、JavaのVMを介してそれぞれの環境に対して影響を与えるような記述ができればいいなと思っています…。 多分ですが、ファイル属性を変更するような機能はJavaでは提供されていないと思います。 理由はおそらく、ファイル属性自体がファイルシステムに大きく依存するからでしょう。 例えば、Javaで隠し属性を設定するメソッドが提供されたとして、UNIX環境でどういう動作になるのが 妥当なのか、私には見当がつきません。(ファイル名の頭に無理やりドットを付けるとか?) どうしてもプロセス起動を避けたいということでしたら、JNIを使ってネイティブメソッドを呼び出す形に なるかと思います。(面倒なので、お勧めはしませんが…) 例えば、Windowsでファイル属性を設定する場合、「Win32APIのSetFileAttributes()を呼び出す ような関数をCかC++で書いてDLL化しておき、Java側でDLL内の関数を呼び出す」といった処理になります。 JNIについては参考URLを見てください。

参考URL:
http://www.hellohiro.com/native.htm
arakororin
質問者

お礼

やっぱりそうですよね…。 ありがとうございました。

関連するQ&A