4

ユーザーがダウンロードするファイルがあり、Java 内でコマンドを実行してファイルを非表示にします。

Runtime.getRuntime().exec("attrib +H myFile.txt");

後でその隠しファイルにアクセスする必要がありますが、取得しています

java.io.FileNotFoundException: myFile.txt (Access is denied)

これは、ファイルが非表示になっていない場合に機能しますが、ファイルを非表示にする必要があるため、ユーザーはファイルを変更できません。では、隠しファイルをどのように変更すればよいのでしょうか? Javaでこれを行う方法はありますか?

アイデアをありがとう。

4

2 に答える 2

6

私はドルフに同意しますが、隠しファイルを使用する代わりに検討することもできます。1 つ目は、(Windows) "attrib" コマンドに依存していることです。第二に、ファイルが非表示としてマークされているからといって、ユーザーがそのファイルを表示または変更できないわけではありません (私はマシンを常に隠しファイルを表示するように設定しています)。別の方法として、標準のディレクトリの場所とファイル命名規則の使用を検討することもできます。たとえば、Windows では、アプリケーション データを配置する標準的な場所は "Application Data" フォルダです。このフォルダは、システム プロパティ「user.home」を使用して見つけることができます。

System.out.println(System.getProperty("user.home"));
//prints out something like C:\Documents And Settings\smithj

これを使用して、独自の Application Data フォルダーを作成できます。

//For Windows
File appDataDir = new File(System.getProperty("user.home"), "Application Data\\MyWidgetData");

同様に、*nix 環境では、アプリケーションは通常、データをホーム ディレクトリの .xyz ディレクトリに保持します。

//*nix OSes
System.out.println(System.getProperty("user.home"));
//prints out something like /user/home/smithj
File appDataDir = new File(System.getProperty("user.home"), ".MyWidgetData");

プロパティ os.name を見て、実行している環境を判断し、それに基づいて正しいパスを作成できます。

于 2010-05-20T17:00:51.137 に答える
3

最初にファイルを再表示します。

Runtime.getRuntime().exec("attrib -H myFile.txt");
                                  ^
于 2010-05-20T15:34:19.893 に答える