特定のディレクトリのファイル作成権限を確認する必要があります。Javaのファイル作成権限をチェックする最良の方法は何ですか
私が試した:
try {
AccessController.checkPermission(new FilePermission("directory_path", "write"));
// Have permission
} catch (SecurityException e) {
// Doesn't have permission
}
を...しかし、これは常に(私の知る限り、これはfsの権限の基礎となるが、明示的に設定する必要がありますいくつかのJVM設定のないをチェックしますわかるてきたように)SecurityExceptionをスローします。
もう一つの可能な方法は、このようなものを使用することでした:「C:\」例えば、私は、ファイルを作成することはできません(
File f = new File("directory_path");
if(f.canWrite()) {
// Have permission
} else {
// Doesn't have permission
}
を...しかし、これは私が指定したディレクトリにファイルを作成できない場合でもtrueを返します管理者権限のないユーザの下でアプリケーションを実行すると、f.canWrite()がtrueを返します)。
File f = new File("directory_path");
try {
File.createTempFile("check", null, f).delete();
// Have permission
} catch (IOException e) {
// Doesn't have permission
}
を...しかし、私は、クライアントのFS上のほとんどすべてのフォルダに対して、このような許可を取得する必要があるので、これは一時的な解決策として働くことができる:
最後に、私はこれまでハッキングと同様のやりました。
上記のパフォーマンス上の問題やハッキングを引き起こすことなく、REALファイルの作成権限をうまく利用する方法を知っている人はいますか?
あなたが説明したことは、基本的に私が3番目のリストで行うのと同じことです。私が言ったように、PC上に存在するほぼすべてのファイルに対して、ファイル作成権限を収集する必要があります。これらのディレクトリの分析やファイル作成にこの情報を使用します。これは私がこの "非同期活動"の可能性を持つことを意味し、私はこれで大丈夫です。問題は、すべてのフォルダ内のファイルを作成/削除するだけで、権限が適切なものではないことがわかります... –