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