我有以下内容:
File file = new File("\\\\somenetworkshare\\folder\\subfolder");
System.out.println(file.listFiles());
System.out.println(file.listFiles());
System.out.println(file.listFiles());
现在,子文件夹是我作为用户无法访问的目录。根据Java 6文档,File.listFiles应该返回null。
我希望上述计划的结果是:
null
null
null
相反,结果是:
null
[Ljava.io.File;@6b86768e
[Ljava.io.File;@48d19bc8
事实上,似乎每次调用listFiles之后都会返回一个空数组。
这是Java中的错误还是有人知道为什么会出现这种行为?
我的Java版本是:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
答案 0 :(得分:0)
这绝对是一个错误,它位于FileSystem类的本机代码中。
使用Files类和newDirectoryStream方法可以获得解决方法:
Path dir = Paths.get("\\\\somenetworkshare\\folder\\subfolder");
DirectoryStream<Path> dirStream = Files.newDirectoryStream(dir);
如果您无权访问该文件夹,您将获得正确的java.nio.file.AccessDeniedException