我需要检查特定目录的文件创建权限。在java中检查文件创建权限的最佳方法是什么
我已经试过:
try {
AccessController.checkPermission(new FilePermission("directory_path", "write"));
// Have permission
} catch (SecurityException e) {
// Doesn't have permission
}
...但是这总是抛出抛出:SecurityException(据我理解这一点没有检查基本fs的权限,但应明确地配置一些JVM设置)。
另一种可能的方法是使用这样的:
File f = new File("directory_path");
if(f.canWrite()) {
// Have permission
} else {
// Doesn't have permission
}
...但即使我不能创建在指定的目录中的文件(例如,我无法创建文件返回true“C:\”当我在没有管理员权限的用户下运行我的应用程序时,但f.canWrite()返回true)。
我到底做过黑客与此类似:
File f = new File("directory_path");
try {
File.createTempFile("check", null, f).delete();
// Have permission
} catch (IOException e) {
// Doesn't have permission
}
...但是这可能只是作为一个临时的解决方案,因为我需要这样的权限在客户端的FS几乎所有的文件夹。
是否有人知道如何很好地获得REAL文件创建权限,而不会导致上述性能问题和黑客?
你所描述的基本上与我在第三上市中所做的是一样的。正如我所说的,我必须收集PC上出现的几乎所有f的文件创建权限。我将在这些目录中使用此信息进行分析和稍后创建文件。这意味着我会有这种“异步活动”的可能性,我对此感到满意。问题是,创建/删除每个文件夹中的文件只是为了弄清楚是否有权限看起来不是一个好soution ... –