我正在制作一个程序,它使您可以查看文件系统。
我正在对其进行测试,然后遇到一个问题:当时我的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/

10-12 00:30
查看更多