Получить содержание каталога с фильтром

Сначала вы создаете класс, который реализует java.io.FilenameFilter, а затем принять Код () метод, а затем вызвать File.list () с фильтром в качестве параметра. Возвращен массив строк имеет все имена, которые прошли через Accept (фильтр).


import java.io.File;

import java.io.FilenameFilter;

public class Filter implements FilenameFilter {



  protected String pattern;



  public Filter (String str) {

    pattern = str;

  }



  public boolean accept (File dir, String name) {

    return name.toLowerCase().endsWith(pattern.toLowerCase());

  }



  public static void main (String args[]) {



    if (args.length != 1) {

       System.err.println ("usage: java Filter   ex. java Filter java");

       return;

    }



    Filter nf = new Filter (args[0]);



    // current directory

    File dir = new File (".");

    String[] strs = dir.list(nf);



    for (int i = 0; i < strs.length; i++) {

      System.out.println (strs[i]);

    }

  }

}

Здесь версии для поддержки нескольких фильтров.


import java.io.File;

import java.io.FilenameFilter;

import java.util.*;

import java.util.TreeSet.*;





public class Filter2 implements FilenameFilter {



  protected Set extensionsSet;



  public Filter2 (String [] extensions) {

    extensionsSet = new TreeSet();



    for (Iterator ext=Arrays.asList(extensions).iterator(); ext.hasNext();) {

      extensionsSet.add(ext.next().toString().toLowerCase().trim());

    }

    extensionsSet.remove("");

  }





  public boolean accept (File dir, String name) {

    final Iterator exts = extensionsSet.iterator();

    while (exts.hasNext()) {

      if (name.toLowerCase().endsWith(exts.next().toString())) {

          return true;

      }

    }

    return false;

  }





  public static void main (String args[]) {

    if (args.length < 1) {

       System.err.println ("usage: java Filter   ex. java Filter java txt");

       return;

       }

    Filter2 nf = new Filter2 (args);

    // current directory

    File dir = new File (".");

    String[] strs = dir.list(nf);

    for (int i = 0; i < strs.length; i++) {

      System.out.println (strs[i]);

      }

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>