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 中不给出 NullPointerException 并且只显示非隐藏和非系统文件?
最佳答案
对隐藏文件执行此操作:
File root = new File(yourDirectory);
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return !file.isHidden();
}
});
这不会返回隐藏文件。
至于系统文件,我认为这是一个 Windows 概念,因此可能不受试图独立于系统的 File
接口(interface)的支持。不过,您可以使用命令行命令(如果存在)。
或者使用@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());
}
});
关于java - 如何在 jtree 中仅列出非隐藏和非系统文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646358/