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中显示非隐藏文件和非系统文件?
解决方法:
对隐藏文件执行此操作:
File root = new File(yourDirectory);
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return !file.isHidden();
}
});
这不会返回隐藏文件.
至于系统文件,我相信这是Windows概念,因此尝试独立于系统的文件接口可能不支持该文件.但是,您可以使用命令行命令(如果存在).
或使用@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 was introduced in Java 7.
标签:jtree,java,file-io,swing,filefilter 来源: https://codeday.me/bug/20191011/1889793.html