我需要根据文件名和扩展名对文件进行排序。我使用apache commons-io regexfileffilter。文件名模式是这样的:"filename.xml。"20130101200"或"filename.xml.20130101200"。Inprog ",其中数字是简单的时间戳。
FileFilter regexFilter = new RegexFileFilter( ".*\d{12}|.*inprog" );
File[] suitableFiles = dir.listFiles( regexFilter );
如果包含这些文件的目录在我的主目录"/home/user/files"中,那么使用jboss运行时一切正常。但是当我将文件夹更改为"/tmp/files/"时,过滤器将找到带有"。inprog"扩展。当我记录dir中的文件数量时,它显示正确的数量。我写了一个简单的主程序来测试,一切都很好,即使文件在/tmp/files中。Jboss在我的主文件夹里。
有什么问题吗?
问题是在正则表达式。从oracle数据库表中取出正则字符串。当我把它改成"。*d{12}|。inprog",去掉一个反斜杠,它开始工作。也"。[0 - 9]{12} |。*inprog"工作正常