Java TreeContentProvider正在获取我路径的每个目录。(文件过滤器)

Java TreeContentProvider正在获取我路径的每个目录。(文件过滤器),java,file,filter,jface,rcp,Java,File,Filter,Jface,Rcp,我正在尝试获取路径中的每个文件夹。 现在我得到的只是文件夹,但一旦出现其他文件,它就会给我一个JavaNullPointerException。 我知道这是因为listFiles(),但我不知道如何让它在其他情况下工作。 有人能帮我吗 `` @覆盖 公共对象[]getElements(对象inputElement){ 返回文件.listRoots(); } @凌驾 公共对象getParent(对象元素){ 返回((文件)元素).getParentFile(); } @凌驾 公共布尔hasChil

我正在尝试获取路径中的每个文件夹。 现在我得到的只是文件夹,但一旦出现其他文件,它就会给我一个JavaNullPointerException。 我知道这是因为listFiles(),但我不知道如何让它在其他情况下工作。 有人能帮我吗

``

@覆盖
公共对象[]getElements(对象inputElement){
返回文件.listRoots();
}
@凌驾
公共对象getParent(对象元素){
返回((文件)元素).getParentFile();
}
@凌驾
公共布尔hasChildren(对象元素){
Object[]obj=getChildren(元素);
返回obj==null?false:obj.length>0;
}
@凌驾
公共对象[]获取子对象(对象父元素){
列表文件=新的ArrayList();
对于(文件:((文件)parentElement).listFiles()){
if(file.isDirectory()){
文件。添加(文件);
}
}
返回((文件)parentElement.listFiles();
}
File.listFiles()如果文件不是目录,则返回null。这导致了您的异常

要仅显示目录,请使用以下内容:

@Override
public Object[] getChildren(Object parentElement) {
   File parentFile = (File)parentElement;

   if (!parentFile.isDirectory()) {
      return new Object[0];
   }

   return parentFile.listFiles(File::isDirectory);
}

空指针具体在哪里?这里:对于(File File File:((File)parentElement.listFiles())如果文件不是导致该错误的目录,则listFiles返回空值。在执行此操作之前,您必须检查它是否为目录。是的,我想到了,您有此示例代码吗?
@Override
public Object[] getChildren(Object parentElement) {
   File parentFile = (File)parentElement;

   if (!parentFile.isDirectory()) {
      return new Object[0];
   }

   return parentFile.listFiles(File::isDirectory);
}