Extension Filename Filter : FileFilter « File Input Output « Java






Extension Filename Filter

    
/**
 * The utillib library.
 * More information is available at http://www.jinchess.com/.
 * Copyright (C) 2002 Alexander Maryanovsky.
 * All rights reserved.
 *
 * The utillib library is free software; you can redistribute
 * it and/or modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * The utillib library is distributed in the hope that it will
 * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
 * General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with utillib library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */


import java.io.File;
import java.io.FilenameFilter;


/**
 * An implementation of the <code>java.io.FilenameFilter</code> which accepts
 * files whose name ends with a certain string. This makes it useful for
 * accepting files with a certain extension.
 */


public class ExtensionFilenameFilter implements FilenameFilter{


  /**
   * The strings with one of which a file's name must end in order to pass the 
   * filter.
   */

  private final String [] endStrings;




  /**
   * Creates a new ExtensionFilenameFilter with the given string. Only files
   * ending with that string will be accepted. Note that in order to use this
   * class to accept only files with a certain extension, you must also provide
   * the '.' character before the extension. For example, to accept only 'txt'
   * files, you must pass ".txt".
   */

  public ExtensionFilenameFilter(String endString){
    this(new String[]{endString});
  }




  /**
   * Creates a new ExtensionFilenameFilter with the given string array. Only
   * files ending with one of the strings in the given string array will be
   * accepted by the created ExtensionFilenameFilter.  Note that in order to use
   * this class to accept only files with a certain extension, you must also 
   * provide the '.' character before the extension. For example, to accept 
   * only 'txt' files, you must pass ".txt".
   */

  public ExtensionFilenameFilter(String [] endStrings){
    this.endStrings = new String[endStrings.length];
    for (int i=0;i<endStrings.length;i++){
      this.endStrings[i] = endStrings[i];
    }
  }




  /**
   * Tests whether the specified file passes the filter. Returns true if the
   * file's name ends with one of the string specified in the constructor.
   */

  public boolean accept(File dir, String filename){
    for (int i=0;i<endStrings.length;i++){
      if (filename.endsWith(endStrings[i]))
        return true;
    }
    return false;
  }


}

   
    
    
    
  








Related examples in the same category

1.Filter files by name
2.Filter by file
3.List files of a certain type
4.Filters files based on the extension (what the filename ends with)
5.A prefix based filename filter
6.File filter: retrieve at most predefined number of files which are older than specified data
7.A suffix based file filter.
8.A filesystem filter.