Java File I / O,如何更改所选目录?

时间:2012-09-04 03:07:35

标签: java file nullpointerexception

这是我认为可行的概念,但出于某种原因,每次运行此代码时,我都会在代码中获得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);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

来自JavaDocs

  

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

答案 1 :(得分:1)

我建议使用isDirectory()方法在继续逻辑之前检查您的文件是否实际上是一个目录。据Javadoc说,这个方法返回

  

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

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

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);
            }
        }   
    }
}