Hugo Zwaal created IO-739: ----------------------------- Summary: RegexFileFilter matches on path instead of name Key: IO-739 URL: https://issues.apache.org/jira/browse/IO-739 Project: Commons IO Issue Type: Bug Components: Filters Affects Versions: 2.9.0 Reporter: Hugo Zwaal Attachments: ListFilesRegexBug.java
The new RegexFileFilter.accept(Path, BasicFileAttributes) uses the full path for matching. When this filter is used in combination with FileUtils.listFiles(File, IOFileFilter, IOFileFilter), then it will not match anything if a path separator is not part of the pattern. The following small program will list all files when used with version 2.8.0 and nothing when used with version 2.9.0: {color:#770055}import {color}{color:#339999}org.apache.commons.io.FileUtils{color}; {color:#770055}import {color}{color:#339999}org.apache.commons.io.filefilter.{color}*; {color:#770055}import {color}{color:#339999}java.io.File{color}; {color:#770055}import {color}{color:#339999}java.util.Collection{color}; {color:#770055}class {color}{color:#339999}ListFilesRegexBug {color}{ {color:#770055}public static void {color}main({color:#339999}String{color}[] {color:#660088}args{color}) { {color:#339999}RegexFileFilter {color}{color:#6688ff}filter {color}= {color:#770055}new {color}RegexFileFilter({color:#0000cc}"[^/{color}{color:#cc88ff}\\\\{color}{color:#0000cc}]+"{color}); {color:#339999}Collection{color}<{color:#339999}File{color}> {color:#6688ff}files {color}= {color:#339999}FileUtils{color}.{color:#575757}listFiles{color}({color:#770055}new {color}File({color:#0000cc}"."{color}), {color:#6688ff}filter{color}, {color:#339999}TrueFileFilter{color}.{color:#0000aa}TRUE{color}); {color:#770055}for {color}({color:#339999}File {color}{color:#6688ff}f {color}: {color:#6688ff}files{color}) { {color:#339999}System{color}.{color:#0000aa}out{color}.println({color:#6688ff}f{color}.getAbsolutePath()); } } } -- This message was sent by Atlassian Jira (v8.3.4#803005)