检查java中文件夹权限的问题

时间:2014-09-10 12:45:38

标签: java

我正在创建一个简单的功能来检查天气我对文件夹的写入/删除权限

我想知道操作系统是否允许写入文件夹?

public static String PermissionCheck(String FilePath) {
    //File f = new File(FilePath);
    String actions = "read,write";
    try 
    {
      AccessController.checkPermission(new FilePermission(FilePath, actions));
      return ("You have read/write permition to use : " + FilePath);
    }
    catch (SecurityException e) 
    {
      return ("You don't have read/write permition to use : " + FilePath);
    }
}

当我使用正确的路径或不正确的路径调用时,它始终从cathc返回消息。

我知道它的重复问题我已经通过很多链接但没有运气!!

Similar Question

Similar Question 1

示例:

PreChecks.PermissionCheck("C:/TEST/G2");
PreChecks.PermissionCheck("C:/Program Files/SAP");

两个调用都会从catch块返回消息,其中我拥有" C:/ TEST / G2"没有写入" C:/ Program Files / SAP"。

的写入权限

我也尝试了canWrite,但它说我已经对#C; / Program Files / SAP"但我知道我没有那些。

1 个答案:

答案 0 :(得分:0)

班级java.io.File的能力有限。 E.g。

File f=new File("C:\\Program Files\\Java");
System.out.println(f.canWrite());

在我的机器上打印true,但不允许用户进程在此位置写入。

相比之下,

Path p=Paths.get("C:\\Program Files\\Java");
System.out.println(Files.isWritable(p));

正确打印false

因此,解决方案是使用NIO API。


方法AccessController.checkPermission的目的完全不同。它有助于实现安全管理员。它会抛出SecurityException,因为您没有明确授予访问该目录的权限,但只要您没有安装SecurityManager,就无关紧要了。