TreeContentProvider 只是获取我路径中的每个目录。 (文件过滤器)
TreeContentProvider just getting every Directory of my path. (File Filter)
我正在尝试获取路径中的每个文件夹。
现在我只得到文件夹,但是一旦出现其他文件,它就会给我一个 JavaNullPointerException。
我知道它是因为 listFiles() 但我不知道如何让它工作。
有人可以帮助我吗?
``
@Override
public Object[] getElements(Object inputElement) {
return File.listRoots();
}
@Override
public Object getParent(Object element) {
return ((File) element).getParentFile();
}
@Override
public boolean hasChildren(Object element) {
Object[] obj = getChildren(element);
return obj == null ? false : obj.length > 0;
}
@Override
public Object[] getChildren(Object parentElement) {
List<File> files = new ArrayList<>();
for (File file : ((File) parentElement).listFiles()) {
if (file.isDirectory()) {
files.add(file);
}
}
return ((File) parentElement).listFiles();
}
File.listFiles() returns 如果文件不是目录,则为 null。这导致了您的异常。
要仅显示目录,请使用类似的东西:
@Override
public Object[] getChildren(Object parentElement) {
File parentFile = (File)parentElement;
if (!parentFile.isDirectory()) {
return new Object[0];
}
return parentFile.listFiles(File::isDirectory);
}
我正在尝试获取路径中的每个文件夹。 现在我只得到文件夹,但是一旦出现其他文件,它就会给我一个 JavaNullPointerException。 我知道它是因为 listFiles() 但我不知道如何让它工作。 有人可以帮助我吗?
``
@Override
public Object[] getElements(Object inputElement) {
return File.listRoots();
}
@Override
public Object getParent(Object element) {
return ((File) element).getParentFile();
}
@Override
public boolean hasChildren(Object element) {
Object[] obj = getChildren(element);
return obj == null ? false : obj.length > 0;
}
@Override
public Object[] getChildren(Object parentElement) {
List<File> files = new ArrayList<>();
for (File file : ((File) parentElement).listFiles()) {
if (file.isDirectory()) {
files.add(file);
}
}
return ((File) parentElement).listFiles();
}
File.listFiles() returns 如果文件不是目录,则为 null。这导致了您的异常。
要仅显示目录,请使用类似的东西:
@Override
public Object[] getChildren(Object parentElement) {
File parentFile = (File)parentElement;
if (!parentFile.isDirectory()) {
return new Object[0];
}
return parentFile.listFiles(File::isDirectory);
}