2010-03-04 107 views
2

我需要扫描一个特定的文件夹在Java中,并能够返回一个特定类型的文件的整数(不仅基于扩展名,而且命名约定)。例如,我想知道那里有多少JPG文件在\ src文件夹中有一个简单的整数文件名(例如,1.JPG到30.JPG)。任何人都可以将我指向正确的方向吗? Thx如何在Java中扫描文件夹?

回答

1

我有一个方法,使用一个相当复杂的文件结构正则表达式模式。类似的东西可以使用,虽然我相信它可以写得比我的例子更简洁(编辑安全)。

/** 
    * Get all non-directory filenames from a given foo/flat directory 
    * 
    * @param network 
    * @param typeRegex 
    * @param locationRegex 
    * @return 
    */ 
    public List<String> getFilteredFilenames(String network, String typeRegex, String locationRegex) { 

     String regex = null; 

     List<String> filenames = new ArrayList<String>(); 
     String directory; 

     // Look at the something network 
     if (network.equalsIgnoreCase("foo")) { 

      // Get the foo files first 
      directory = this.pathname + "/" + "foo/filtered/flat"; 
      File[] foofiles = getFilenames(directory); 

      // run the regex if need be. 
      if (locationRegex != null && typeRegex != null) { 
       regex = typeRegex + "." + locationRegex; 

       //System.out.println(regex); 
      } 


      for (int i = 0; i < foofiles.length; i++) { 
       if (foofiles[i].isFile()) { 
        String file = foofiles[i].getName(); 

        if (regex == null) { 
         filenames.add(file); 
        } 
        else { 
         if (file.matches(regex)) { 
          filenames.add(file); 
         } 
        } 
       } 
      } 
     } 

     return filenames; 
    }