我正在制作一个程序,它使您可以查看文件系统。
我正在对其进行测试,然后遇到一个问题:当时我的C:\驱动器上有一个名为“ Documents and Settings”的目录,而该目录不存在。
这是我获取文件数组的方式:
File f = new File(path); //path being a path sent by the client, for example C:\
if(f.isFile()){
//TODO start downloading it.
out.println("ERR: no dir!");
return;
}
Server.log.log("System path requested: " + f.getAbsolutePath());
File[] files = f.listFiles();
for(int i = 0; i < files.length; i++){
File found = files[i];
if(!found.exists()){
continue;
}
if(found.isDirectory()){
out.println("dir:" + found.getName());
}else{
out.println(found.getName());
}
System.out.println("Printed " + found.getName());
}
out.println("ENDOFLIST"); //Notify the client it has to stop receiving data
由于某些原因,即使打开了“显示隐藏的文件夹”选项,它也会输出很多我似乎找不到的目录。
尝试访问这些目录时,它将尝试读取目录的内容,但是由于该目录不存在,因此会引发异常,从而导致没有数据通过套接字发送并且我的客户端冻结。
我的问题是:有没有办法检查文件/目录是否确实存在?请注意,如果您查看我的代码块,如果文件/目录不存在,则它已经继续而不是将其写入套接字。
我给它一个谷歌,但没有找到匹配项。此外,我还赋予了搜索功能一个机会,但没有提出类似的建议。
最佳答案
我建议使用Java 7引入的新的Fil I / O API,该功能大大改善了对特定文件系统提供的功能的支持。它还提供了使用遍历文件树的可能性。
看一下FileVisitor
http://docs.oracle.com/javase/7/docs/api/java/nio/file/FileVisitor.html对您有很大帮助。
关于java - Java List数组显示不存在的文件夹。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9165000/