sách gpt4 ăn đã đi

java - 在java中检查文件创建权限的最佳方法是什么

In lại 作者:搜寻专家 更新时间:2023-11-01 03:43:58 27 4
mua khóa gpt4 giày nike

我需要检查特定目录的文件创建权限。

我试过:

thử {
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
} khác {
// Doesn't have permission
}

... 但是即使我无法在指定目录中创建文件,这也会返回 true(例如,当我在没有管理员权限的用户下运行我的应用程序时,我无法在“c:\”中创建文件,但 f.canWrite() 返回是的)。

最后我做了类似这样的破解:

File f = new File("directory_path");
thử {
File.createTempFile("check", null, f).delete();

// Have permission
} bắt (IOException e) {
// Doesn't have permission
}

...但这可能只是一个临时解决方案,因为我需要为客户端 fs 上的几乎所有文件夹获得此类权限。

有谁知道如何很好地获得真正的文件创建权限,而不会导致上述性能问题和黑客攻击?

câu trả lời hay nhất

测试任何资源的可用性/可用性的最佳方法是尝试使用它。在这种情况下,new FileOutputStream(new File(dir, name))。如果目录不可写,或者文件已经存在且不可写等等,它将抛出 Ngoại lệ IO。当您执行该代码时,操作系统已经必须进行所有这些检查:尝试全部复制是没有意义的,即使你 100% 正确,这是不可能的,你仍然引入了一个计时窗口,在这个窗口中,由于异步 Activity ,先前的“真”条件可能会变成“假” .无论如何,您必须从文件创建中捕获异常,并在 catch block 中编写代码来处理它们:为什么要写两次?

关于java - 在java中检查文件创建权限的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7386477/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress