检查文件夹在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之间存在一个问题 错误: 你有什么解决办法吗?我要做的就是继续写那个文件夹。如果有效,那么一切都很好,如果无效,您可以捕获异常 从哲学上讲,这是一种蟒蛇式的方法

我试图通过以下两种方式检查文件夹在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
   }
}