в Java, используя звездочку и вопросительные знаки, чтобы соответствовать имени файла - PullRequest
5 голосов
/ 14 апреля 2011

Я хочу написать в Java что-то вроде этого:

public class MyMatcher 
{
   public static boolean isMatching(String filename, String param) { 
      ...
   }
}

имя файла будет именем файла без каталога (например: readme.txt, shares.csv, хорошая песня.mp3,...)

param будет что-то вроде "* .mp3", чтобы сказать, что все файлы заканчиваются на .mp3 и т. Д.

Примечание: param не является регулярным выражениемкак обычный способ поиска файлов, таких как текстовый блок или затмение или даже DOS DIR.

Может кто-нибудь подсказать, как это сделать или есть какая-нибудь библиотека с открытым исходным кодом, чтобы сделать это?

Ответы [ 2 ]

5 голосов
/ 14 апреля 2011
String pattern = param.replaceAll ("\\*", ".*").replaceAll ("\\?", ".");
return filename.matches (pattern); 
2 голосов
/ 14 апреля 2011

Apache Commons IO имеет WilcardFileFilter :

Подстановочный знак сопоставления использует символы '?'и '*' для представления одного или нескольких подстановочных знаков.

Пример из javadoc:

File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
  System.out.println(files[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...