regexpfilefilter.java

来自「Jodd是一个开源的公用Java基础类库」· Java 代码 · 共 85 行

JAVA
85
字号
package jodd.file.filters;

import java.io.File;
import java.io.FileFilter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import jodd.util.StringFlags;
import jodd.util.StringUtil;

/**
 * FileFilter that matches files with use of Regular Expression.
 *
 * Here are some tips for regular expressions:
 * <ul>
 *   <li>.* : matches any number of character</li>
 *   <li>.? : matches zero or one character</li>
 * </ul>
 *
 * For more details check the <code>FileFilterAbs</code> documentation.
 *
 * @see jodd.file.filters.FileFilterAbs
 */
public class RegExpFileFilter extends FileFilterAbs {

	// ---------------------------------------------------------------- construction

	/**
	 * Regular Expression file filter.
	 */
	public RegExpFileFilter(String pattern, String opt) {
		super(pattern, opt);
	}

	/**
	 * Regular Expression file filter with default behaviour.
	 *
	 * @param pattern pattern
	 */
	public RegExpFileFilter(String pattern) {
		super(pattern);
	}

	/**
	 * Regular Expression file filter with no behaviour and that may
	 * be configured later.
	 */
	public RegExpFileFilter() {
		super();
	}

	// ---------------------------------------------------------------- speed optimization

	private Pattern regexpPattern = null;

	/**
	 * Sets the new pattern. It overrides default method because of speed
	 * optimization.
	 *
	 * @param p      pattern
	 */
	public void setPattern(String p) {
		super.setPattern(p);
		if (pattern != null) {
			regexpPattern = Pattern.compile(pattern);
		}
	}

	// ---------------------------------------------------------------- FileFilterAbs.match()

	/**
	 * Regular expression matching.
	 *
	 * @param file   File to match.
	 *
	 * @return <code>true</code> if file name matches regular expression pattern,
	 *         <code>false</code> otherwise.
	 */
	public boolean match(File file) {
		Matcher matcher = regexpPattern.matcher(getFileName(file));	// regexp match
		return matcher.matches();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?