检查文件夹在Java 1.6中是否可读
我试图通过以下两种方式检查文件夹在Java 1.6中是否可读: 1) 使用File类的canRead方法。但它始终是可读的(canRead()返回总是true): 2) 使用FilePermission类和捕获异常。但它始终捕获异常(当文件夹可读或不可读时): 我发现在这种情况下,Microsoft Windows OS和Java 1.6之间存在一个问题 错误:检查文件夹在Java 1.6中是否可读,java,file,file-permissions,Java,File,File Permissions,我试图通过以下两种方式检查文件夹在Java 1.6中是否可读: 1) 使用File类的canRead方法。但它始终是可读的(canRead()返回总是true): 2) 使用FilePermission类和捕获异常。但它始终捕获异常(当文件夹可读或不可读时): 我发现在这种情况下,Microsoft Windows OS和Java 1.6之间存在一个问题 错误: 你有什么解决办法吗?我要做的就是继续写那个文件夹。如果有效,那么一切都很好,如果无效,您可以捕获异常 从哲学上讲,这是一种蟒蛇式的方法
你有什么解决办法吗?我要做的就是继续写那个文件夹。如果有效,那么一切都很好,如果无效,您可以捕获异常 从哲学上讲,这是一种蟒蛇式的方法 “请求原谅总比请求允许好” 但你似乎没有选择的余地
这里有一篇很好的StackOverflow帖子,就是关于这一理念的:(参见问题中的'Update#3',这是一个非常好的例子,在某种程度上与您的问题有关)这既快又脏
File dir = new File("foo");
if (dir.exists()) {
if (dir.listFiles() == null) {
// directory not readable
}
}
所有IO错误都在listFiles()中处理。错误报告提到NTFS文件系统存在此错误。
try {
FilePermission filePermission = new FilePermission(folder.getAbsolutePath(), "read");
AccessController.checkPermission(filePermission);
// The file is readable
} catch (AccessControlException pACE) {
// The file is not readable !!
}
File dir = new File("foo");
if (dir.exists()) {
if (dir.listFiles() == null) {
// directory not readable
}
}