我正在编写一个程序,其中一部分是删除某个文件夹中的文件(在程序的根目录中)。目前,文件不是由程序创建的,而是在外部创建的 - 但将来它们可能会也可能不会由程序本身创建/编辑。
现在问题:
当我尝试删除文件时,我获得了权限异常。经过大量的检查,调试和研究,我写了这段代码:
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中(我的所有项目都在这里)。该文件存在,可读写。我做了所有检查。问题仅在于许可。
我该如何解决这个问题?
编辑:我试图将我的文件的位置更改为我的本地系统,但它有相同的错误。所以它只是在Dropbox上不是问题。
答案 0 :(得分:3)
显然,我没有关闭Scanner
文件。我只是简单地抑制了资源泄漏..我必须将Scanner
文件包裹在try { } finally { }
中,以便它可以正常工作。
答案 1 :(得分:1)
如果您使用的是Windows,请以管理员身份运行您的软件。 您可以以管理员或IDE本身(Netbeans,Eclipse)运行程序。两者都应该有用。