File dir =newFile("some/path/to/dir");finalString id ="XXX";//needs to be final so the anonymous class can use itFile[] matchingFiles = dir.listFiles(newFileFilter(){publicboolean accept(File pathname){return pathname.getName().equals("a_id_"+ id +".zip");}});
Livré avec une méthode, il ressemblerait à:
publicstaticFile[] findFilesForId(File dir,finalString id){return dir.listFiles(newFileFilter(){publicboolean accept(File pathname){return pathname.getName().equals("a_id_"+ id +".zip");}});}
j'ai créé des fichiers zip nommé avec a_id_123.zip ,a_id_124.zip ,a_id_125.zip ,a_id_126.zip
et il semble bien fonctionner mais je ne suis pas sûr si c'est la bonne réponse pour vous.
La sortie sera la suivante si les fichiers répertoriés ci-dessus existe
Cette solution généralise sur le Bohemian réponse. Il utilise des expressions régulières et remplace également l'intérieur de la classe avec Java 8 les expressions lambda. Merci @Bohème pour la mise en œuvre d'origine.
import java.io.File;publicclassFileFinder{publicstaticvoid main(String[] args){File directory =newFile("D:\\tmp");String id ="20140430104033";for(File f : findFilenamesWithId(id, directory)){System.out.println(f.getAbsoluteFile());}}/** Finds files in the specified directory whose names are formatted
as "a_id_ID.zip" */publicstaticFile[] findFilenamesWithId(String ID,File dir){return findFilenamesMatchingRegex("^a_id_"+ ID +"\\.zip$", dir);}/** Finds files in the specified directory whose names match regex */publicstaticFile[] findFilenamesMatchingRegex(String regex,File dir){return dir.listFiles(file -> file.getName().matches(regex));}}
Java 7 a quelques bon support de filtrage (PathMatcher) et récursive répertoire de la marche (les Fichiers.walkFileTree()). Dans le contexte de la question d'origine, cette page de l'Oracle de la documentation de Java est un bon début:
Passer un
FileFilter
(codé ici de manière anonyme) dans lelistFiles()
méthode de la dirFile
, comme ceci:Livré avec une méthode, il ressemblerait à:
et ce que vous pourriez appeler comme:
ou tout simplement de vérifier l'existence,
OriginalL'auteur Bohemian
j'ai créé des fichiers zip nommé avec a_id_123.zip ,a_id_124.zip ,a_id_125.zip ,a_id_126.zip
et il semble bien fonctionner mais je ne suis pas sûr si c'est la bonne réponse pour vous.
La sortie sera la suivante si les fichiers répertoriés ci-dessus existe
trouvé a_id_126.zip
OriginalL'auteur GiantRobot
Cette solution généralise sur le Bohemian réponse. Il utilise des expressions régulières et remplace également l'intérieur de la classe avec Java 8 les expressions lambda. Merci @Bohème pour la mise en œuvre d'origine.
OriginalL'auteur Yeison
Java 7 a quelques bon support de filtrage (PathMatcher) et récursive répertoire de la marche (les Fichiers.walkFileTree()). Dans le contexte de la question d'origine, cette page de l'Oracle de la documentation de Java est un bon début:
De Recherche De Fichiers: http://docs.oracle.com/javase/tutorial/essential/io/find.html
OriginalL'auteur Dave Hartnoll
Vous pouvez utiliser apache WildCardFileFilter
https://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/filefilter/WildcardFileFilter.html
OriginalL'auteur nkare
Autres réponses ou d'essayer de la fourmi bibliothèques. Voici un exemple: http://code.google.com/p/maven-replacer-plugin/source/browse/trunk/src/main/java/com/google/code/maven_replacer_plugin/include/FileSelector.java
OriginalL'auteur Steven