1

这是我认为可行的概念,但由于某种原因,每次运行此代码时,我都会NullPointerException在代码中得到一个:

for(String s : namesOfDirectoryFiles){

代码

public class poc {
    private File current;
    private File last;
    private String[] namesOfDirectoryFiles;
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args){
        poc p = new poc();
        p.open("C:/");
        p.open(input.nextLine());
    }

    private void open(String name){
        current = new File(last, name);
        namesOfDirectoryFiles = current.list();
        for(String s : namesOfDirectoryFiles){
            System.out.println(s);
        }
    }
}
4

2 回答 2

1

如果抽象路径不存在,则会发生这种情况。

基本上,如果您尝试列出 Java 无法解析到物理位置的目录,它将返回一个空列表

来自JavaDocs

如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null

于 2012-09-04T03:10:22.950 回答
1

我建议使用isDirectory()方法来检查您的文件是否实际上是一个目录,然后再继续您的逻辑。根据Javadoc,此方法返回

当且仅当此抽象路径名表示的文件存在并且是目录时才为真;否则为假

您可以将代码修改为以下内容:

private void open(String name){
    if(name != null){
        current = new File(last, name);

        if(current.isDirectory()){
            namesOfDirectoryFiles = current.list();
            for(String s : namesOfDirectoryFiles){
             System.out.println(s);
            }
        }   
    }
}
于 2012-09-04T03:12:18.307 回答