/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.vfs2;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

A FileSelector that selects based on regular expressions.

The regular expression specified in one of the constructors is matched against FileName.getPath() of all candidate files. If you want to match only against the base file name, make sure to prefix the pattern with ".*\\/".

Since:2.1
/** * A {@link FileSelector} that selects based on regular expressions. * <p> * The regular expression specified in one of the constructors is * {@linkplain Matcher#matches() matched} against {@link FileName#getPath()} * of all candidate files. If you want to match only against the base file name, * make sure to prefix the pattern with {@code ".*\\/"}. * </p> * * @since 2.1 */
public class PatternFileSelector implements FileSelector {
The extensions to select.
/** * The extensions to select. */
private final Pattern pattern;
Creates a new selector for the given pattern.

See PatternFileSelector for a specification how the pattern is matched.

Params:
  • pattern – The regular expressed used by this selector.
/** * Creates a new selector for the given pattern. * <p> * See {@link PatternFileSelector} for a specification how the pattern is matched. * </p> * * @param pattern The regular expressed used by this selector. */
public PatternFileSelector(final Pattern pattern) { this.pattern = pattern; }
Creates a new selector for the given pattern.

See PatternFileSelector for a specification how the pattern is matched.

Params:
  • regex – The regular expressed used by this selector.
See Also:
/** * Creates a new selector for the given pattern. * <p> * See {@link PatternFileSelector} for a specification how the pattern is matched. * </p> * * @param regex The regular expressed used by this selector. * * @see Pattern#compile(String, int) */
public PatternFileSelector(final String regex) { this(Pattern.compile(regex)); }
Creates a new selector for the given Pattern and flags.

See PatternFileSelector for a specification how the pattern is matched.

Params:
  • regex – The expression to be compiled
  • flags – Match flags, a bit mask.
See Also:
/** * Creates a new selector for the given Pattern and flags. * <p> * See {@link PatternFileSelector} for a specification how the pattern is matched. * </p> * * @param regex The expression to be compiled * @param flags Match flags, a bit mask. * * @see Pattern#compile(String, int) */
public PatternFileSelector(final String regex, final int flags) { this(Pattern.compile(regex, flags)); }
Determines if a file or folder should be selected.

See PatternFileSelector for a specification how the pattern is matched.

Params:
  • fileInfo – The file selection information.
Returns:true if the file should be selected, false otherwise.
/** * Determines if a file or folder should be selected. * <p> * See {@link PatternFileSelector} for a specification how the pattern is matched. * </p> * * @param fileInfo The file selection information. * @return true if the file should be selected, false otherwise. */
@Override public boolean includeFile(final FileSelectInfo fileInfo) throws Exception { return this.pattern.matcher(fileInfo.getFile().getName().getPath()).matches(); } @Override public String toString() { return this.pattern.toString(); }
Determines whether a folder should be traversed.

This implementation always returns true to make sure all leafs are inspected.

Params:
  • fileInfo – The file selection information.
Returns:true if descendants should be traversed, false otherwise.
/** * Determines whether a folder should be traversed. * <p> * This implementation always returns true to make sure all * leafs are inspected. * </p> * * @param fileInfo The file selection information. * @return true if descendants should be traversed, false otherwise. */
@Override public boolean traverseDescendents(final FileSelectInfo fileInfo) throws Exception { return true; } }