如何使用java检索隐藏文件夹?

时间:2014-11-24 10:24:29

标签: java

public void Process(File aFile) throws IOException, ParseException {

  if(aFile.isFile())
  {
    System.out.println("File name:"+aFile.getAbsolutePath());
  }
  else if (aFile.isDirectory()) {

    File[] listOfFiles = aFile.listFiles((FileFilter) HiddenFileFilter.HIDDEN);
    if(listOfFiles!=null) {
          for (int i = 0; i < listOfFiles.length; i++)
              Process(listOfFiles[i]);
    } 

    File[] listOfFiles1 = aFile.listFiles((FileFilter) HiddenFileFilter.VISIBLE);
    if(listOfFiles1!=null) {
          for (int i = 0; i < listOfFiles1.length; i++)
              Process(listOfFiles1[i]);
    } 
  }
}

按如下方式调用main中的函数

String nam = "E:\\";
File aFile = new File(nam);
Process(aFile);

我正在使用上面的代码来检索E:\中存在的所有文件详细信息。它不会检索隐藏的文件夹文件详细信息。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

只需使用aFile.listFiles()而不使用FileFilter,然后根据对isHidden()的检查,将每个隐藏文件夹的路径放入列表中。

示例代码:

public static void process(File aFile){
    if (aFile.isFile()) {
        System.out.println("File name:" + aFile.getAbsolutePath());
    } else if (aFile.isDirectory()) {
        if(aFile.isHidden()){
            System.out.println(aFile.getAbsolutePath()+"folder is hidden");
        }
        File[] listOfFiles = aFile.listFiles();
        if (listOfFiles != null) {
            for (int i = 0; i < listOfFiles.length; i++)
                process(listOfFiles[i]);
        }
    }
}