2010-03-04 3 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; 
    } 
Смежные вопросы