プログラムの一部は、特定のフォルダー (プログラムのルート) 内のファイルを削除することです。現在、ファイルはプログラムによって作成されるのではなく、外部的に作成されますが、将来的には、プログラム自体によって作成/編集される場合とされない場合があります。
今問題:
ファイルを削除しようとすると、アクセス許可の例外が発生します。多くのチェック、デバッグ、調査の後、次のコードを書きました。
private void checkAndDelete(int n, String fileName) {
// TODO: file permission error
if (n == JOptionPane.YES_OPTION) {
File file = new File(fileName);
file.setWritable(true);
SecurityManager s = new SecurityManager();
s.checkDelete(fileName);
System.out.println(file);
if(file.delete()) {
JOptionPane.showMessageDialog(null, "Deletion successful!");
initializeNorth();
} else {
JOptionPane.showMessageDialog(null, "Deletion failed!");
}
}
}
n
ユーザーが削除を確認するダイアログ ボックスで [はい] または [いいえ] をクリックしたときの値、fileName
はファイル名です。
今、checkDelete
メソッドはこれをスローします:
Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied ("java.io.FilePermission" "DB/fun trivia.kgf" "delete")
だから私は問題を絞り込みました-許可の問題。問題がある場合は、ファイルをドロップボックス (すべてのプロジェクトがある場所) に持っています。ファイルが存在し、読み書き可能です。私はすべてのチェックをしました。問題は許可のみです。
これを修正するにはどうすればよいですか?
編集: ファイルの場所をローカル システムに変更しようとしましたが、同じエラーが発生しました。そのため、ドロップボックスのみでは問題ありません。