001 /*--------------------------------------------------------------------------+
002 $Id: FileExtensionFilter.java 26283 2010-02-18 11:18:57Z juergens $
003 | |
004 | Copyright 2005-2010 Technische Universitaet Muenchen |
005 | |
006 | Licensed under the Apache License, Version 2.0 (the "License"); |
007 | you may not use this file except in compliance with the License. |
008 | You may obtain a copy of the License at |
009 | |
010 | http://www.apache.org/licenses/LICENSE-2.0 |
011 | |
012 | Unless required by applicable law or agreed to in writing, software |
013 | distributed under the License is distributed on an "AS IS" BASIS, |
014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
015 | See the License for the specific language governing permissions and |
016 | limitations under the License. |
017 +--------------------------------------------------------------------------*/
018 package edu.tum.cs.commons.filesystem;
019
020 import java.io.File;
021
022 import edu.tum.cs.commons.string.StringUtils;
023
024 /**
025 * This is a file filter finding only "normal" files having one of the specified
026 * extensions.
027 *
028 * @author Benjamin Hummel
029 * @author Florian Deissenboeck
030 * @author $Author: juergens $
031 * @version $Rev: 26283 $
032 * @levd.rating GREEN Hash: 9F45801971F39E82A3241CF6B2E64CE6
033 */
034 public class FileExtensionFilter extends FileOnlyFilter {
035
036 /** The extension to match. */
037 private final String[] extensions;
038
039 /**
040 * Creates a new file extension filter.
041 *
042 * @param extensions
043 * the extension required by the files (without the dot). Note
044 * that using an empty string will not find all files without
045 * extension, but rather those ending in a single dot.
046 */
047 public FileExtensionFilter(String... extensions) {
048 this.extensions = new String[extensions.length];
049 for (int i = 0; i < extensions.length; i++) {
050 this.extensions[i] = "." + extensions[i];
051 }
052 }
053
054 /** {@inheritDoc} */
055 @Override
056 public boolean accept(File file) {
057 return super.accept(file)
058 && StringUtils.endsWithOneOf(file.getName(), extensions);
059 }
060 }