0

プログラムの一部は、特定のフォルダー (プログラムのルート) 内のファイルを削除することです。現在、ファイルはプログラムによって作成されるのではなく、外部的に作成されますが、将来的には、プログラム自体によって作成/編集される場合とされない場合があります。

今問題:

ファイルを削除しようとすると、アクセス許可の例外が発生します。多くのチェック、デバッグ、調査の後、次のコードを書きました。

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")

だから私は問題を絞り込みました-許可の問題。問題がある場合は、ファイルをドロップボックス (すべてのプロジェクトがある場所) に持っています。ファイルが存在し、読み書き可能です。私はすべてのチェックをしました。問題は許可のみです。

これを修正するにはどうすればよいですか?

編集: ファイルの場所をローカル システムに変更しようとしましたが、同じエラーが発生しました。そのため、ドロップボックスのみでは問題ありません。

4

2 に答える 2

3

どうやら、Scannerファイルを閉じていなかったようです。私は単にリソースリークを抑制していました..しかし、それが機能するためにはファイルをラップする必要Scannertry { } finally { }ありました.

于 2013-02-27T23:35:29.070 に答える
1

Windowsを使用している場合は、ソフトウェアを管理者として実行します。プログラムは、管理者またはIDE自体(Netbeans、Eclipse)として実行できます。両方とも機能するはずです。

于 2013-02-25T20:27:04.047 に答える