2013-12-20 16 views
3

我有以下几点:后续调用File.listFiles得到不同的结果

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

这绝对是一个错误,它位于文件系统类的本地代码。

一个可行的解决方法,通过使用文件类和newDirectoryStream方法:

Path dir = Paths.get("\\\\somenetworkshare\\folder\\subfolder"); 
DirectoryStream<Path> dirStream = Files.newDirectoryStream(dir); 

如果您没有访问该文件夹,你会得到一个适当的java.nio.file.AccessDeniedException