【发布时间】:2013-01-02 21:42:36
【问题描述】:
我有以下代码:
public Tester()
{
try {
File f4 = new File("C:\\Vase.zip");
System.out.println(f4.exists());
f4.delete();
System.out.println(f4.exists());
} catch (Exception e) {
e.printStackTrace();
}
}
当我运行程序时,它不会删除文件。 (如果我把文件放在 D 盘,然后要求它删除,它就完美了。)所以我知道这是一个权限问题。我正在使用日食。我只在管理员模式下运行 eclipse [in windows]。
该程序能够写入和删除其他文件,但仅此一个不起作用。谁能指导我如何解决这个问题?
【问题讨论】:
-
用
throw new RuntimeException(e)替换e.printStackTrace()(或使用throws IOException方法并向上传播)——也就是说,让程序死掉(同时删除任何多余的外部try/catch)而不是将其塞入可能被掩埋的打印痕迹中。之后:程序是否会因异常而可怕地死掉? -
Eclipse 可能在管理员模式下运行,但您必须记住,运行 java 程序会启动 java.exe 的新实例。那可能没有从调用者应用继承的管理员权限。
-
@GeorgeVremescu 每当我以管理员模式运行 Eclipse 时,我从中运行的应用程序也具有管理员权限。我一直注意到这一点。但无论如何,我将其缩小到这一点,我的代码的另一部分使用了该文件并且没有 .close() 它。我可以运行一些函数来强制所有其他输入流等放弃它,而不是在整个程序中搜索错误吗?
-
这意味着java应该有一个所有打开流的日志......这将是一个有趣的想法!
-
别怪我,如果我错了,但看起来文件在其他地方打开。
标签: java windows file permissions