文件检查权限

use*_*435 5 java java-7

我正在尝试使用以下代码片段检查给定文件的权限.

public static void main(String[] args) {
    try{
        FilePermission fp = new FilePermission("E:/test.txt", "read");
        AccessController.checkPermission(fp);
        System.out.println("Ok to open socket");
    } catch (AccessControlException ace) {
        System.out.println(ace);
    }
Run Code Online (Sandbox Code Playgroud)

所以当我运行它时,它会给我以下异常:

java.security.AccessControlException: access denied ("java.io.FilePermission" "E:/test.txt" "read")

所有权限都在文件中启用,但它会抛出访问被拒绝的异常.

wer*_*ero 5

使用以下代码段检查您是否可以读取文件:

boolean canRead = new java.io.File("E:/test.txt").canRead();
Run Code Online (Sandbox Code Playgroud)

File.canRead检查 SecurityManager(如果有)是否允许读取文件,以及您是否在文件系统中具有读取权限。

AccessController.checkPermission(fp)如果存在暗示许可的安全上下文,Using只会不会抛出异常。当您像示例中那样简单地启动 Java 应用程序时,情况并非如此。