显示启动目录和其他“受保护”文件的windows Java列表文件
我使用以下递归方法列出给定目录中的所有文件和文件夹,但它似乎列出了一些在Windows资源管理器中不可见的文件,即使在显示隐藏的和受系统保护的文件时也是如此。我已将该方法设置为扫描C:\\
目录,在输出Boot
目录和BOOTSECT.BAK
中的文件后,该方法将挂起。嗯,实际上,我不认为它挂起-看起来它返回了最终的数组,但是仍然有更多的文件,并且没有抛出异常
private static ArrayList<File> recursiveSearch(File dir){
File[] files = dir.listFiles();
ArrayList<File> result = new ArrayList<File>();
for(File file : files)
if(file.isDirectory()){
result.add(file);
ArrayList<File >tempList = recursiveSearch(file);
for(File temp : tempList)
result.add(temp);
}else{
result.add(file);
System.out.println(file.getPath());
}
return result;
}
我知道FileSystemView
,但在这种情况下,我不能使用它,因为我需要应用自定义文件名筛选器(我已从上面排除了该筛选器,但我已进行了测试,它不会影响方法输出)。任何帮助都将不胜感激-提前感谢
# 1 楼答案
此文件(bootssect.bak)被检测为目录,但返回空文件数组。解决方法是检查它是否实例化: