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]);
}
}
我应该怎么做才能不给空指针异常并仅显示非隐藏和非系统文件在 jTree 中?
对隐藏文件执行此操作:
File root = new File(yourDirectory);
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return !file.isHidden();
}
});
这不会返回隐藏文件。
至于系统文件,我相信这是一个Windows概念,因此可能不被支持File
试图独立于系统的接口。不过,您可以使用命令行命令(如果存在)。
或者使用@Reimeus 在他的回答中的内容。
可能喜欢
File root = new File("C:\\");
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
Path path = Paths.get(file.getAbsolutePath());
DosFileAttributes dfa;
try {
dfa = Files.readAttributes(path, DosFileAttributes.class);
} catch (IOException e) {
// bad practice
return false;
}
return (!dfa.isHidden() && !dfa.isSystem());
}
});
DosFileAttributes 是在 Java 7 中引入的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)