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

所以我缩小了问题的范围——权限问题。如果重要的话,我将文件放在保管箱中(我所有的项目都在其中)。文件存在,可读可写。我已经完成了所有检查。问题只是为了许可。

我该如何解决?

编辑:我试图将我的文件的位置更改为在我的本地系统上,但它有同样的错误。因此,仅在 Dropbox 上这不是问题。

4

2 回答 2

3

显然,我没有关闭我Scanner的文件。我只是在抑制资源泄漏。我必须将文件包装起来Scanner才能try { } finally { }使其正常工作。

于 2013-02-27T23:35:29.070 回答
1

如果您使用的是 Windows,请以管理员身份运行您的软件。您可以以管理员身份或 IDE 本身(Netbeans、Eclipse)运行您的程序。两者都应该工作。

于 2013-02-25T20:27:04.047 回答