java如何在jtree中只列出非隐藏和非系统文件
File f=new File("C:/");
File fList[] = f.listFiles();
当我使用它列出所有系统文件以及隐藏文件
当我使用它在jTree中显示时,这会导致空指针异常,如下所示:
public void getList(DefaultMutableTreeNode node, File f) {
if(f.isDirectory()) {
DefaultMutableTreeNode child = new DefaultMutableTreeNode(f);
node.add(child);
File fList[] = f.listFiles();
for(int i = 0; i < fList.length; i++)
getList(child, fList[i]);
}
}
我应该怎么做才能使它不产生NullPointerException并在jTree中只显示非隐藏和非系统文件
# 1 楼答案
如果在Windows下运行,Java 7引入了DosFileAttributes,可以过滤系统和隐藏文件。这可以与
FileFilter
结合使用# 2 楼答案
如果您试图列出
C:/
中的所有文件,请记住,还有一些文件既不是隐藏的,也不是系统文件,但仍然无法打开,因为它们需要特殊权限。因此:因此,只需比较数组是否为null,并以这样的方式设计递归,即它只跳过那些
list()
函数的数组为null的文件下面是我用来使用jtree创建窗口文件资源管理器的代码
# 3 楼答案
对隐藏文件执行以下操作:
这不会返回隐藏的文件
至于系统文件,我认为这是一个Windows概念,因此可能不受试图独立于系统的
File
接口的支持。不过,如果存在命令行命令,也可以使用这些命令或者用@Reimeus的答案
可能像
DosFileAttributes was introduced in Java 7.