Files.isExecutable(...)虽然我对文件具有权限但给出了false
我正在使用java.nio.file.Files类来检查登录用户是否具有执行文件的权限。虽然我有权执行文件(即我可以手动运行该文件),isExecutable(pathToFile)返回false。 JVM没有执行文件的权限?Files.isExecutable(...)虽然我对文件具有权限但给出了false
的Files.is…
方便的方法,如Files.isExecutable(path)
都不错,如果当你想知道的细节一个简单的true
/false
答案是足够的,在这种情况下,他们饶你从处理异常处理,但没有太大的帮助。如果追溯在后台会发生什么,你可以自己catch
异常,找出原因JVM假定执行文件将无法正常工作:
try {
path.getFileSystem().provider().checkAccess(path, AccessMode.EXECUTE);
System.out.println("can execute "+path);
} catch(IOException ex) {
System.out.println("can not execute: "+ex);
}
异常(或它的实际类型)可能告诉你原因。
请注意,这是一个IOException
。与您对问题的评论相反,您可以排除安全策略问题。如果存在禁止访问的JVM安全策略,则在致电Files.isExecutable(path)
时,也会引发SecurityException
,您注意到了这一点。
如果Files.isExecutable(path)
返回false
,你可以安全地假设一个IOException
已被checkAccess
或抛出,或者说,因为它是假定当前用户确实没有足够的访问权限,因为越来越之前有一个I/O问题考虑访问权限。
谢谢。我试过这个,并且因为抛出异常。它变成了java 7中的[bug](http://bugs.java.com/view_bug.do?bug_id=7190897),它在8中修复。 – Rajasekhar
这正是你应该推断的:操作系统用户有权执行文件而不是JVM。 –
所以。有没有办法授予JVM权限? – Rajasekhar
看到此 - https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html – mbsingh