Trouver des fichiers dans un dossier à l'aide de Java
Ce que je dois faire si la Recherche d'un dossier de dire C:\example
Que je puis avoir besoin de passer par chaque fichier et vérifier pour voir si elle correspond à un peu de start personnages donc, si les fichiers de démarrage
temp****.txt
tempONE.txt
tempTWO.txt
Ainsi, si le fichier commence avec le temp et a une extension .txt je voudrais ensuite mettre que le nom de fichier dans un File file = new File("C:/example/temp***.txt);
donc, je peux alors lire dans le fichier, la boucle est alors nécessaire de se déplacer sur le prochain fichier à vérifier pour voir si elle répond comme ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez est
Fichier.listFiles(FileNameFilter filtre)
.Qui vous donnera une liste des fichiers dans le répertoire que vous voulez qui correspondent à un certain filtre.
Le code ressemblera à:
/
) très bien sous Windows. Donc il n'y a pas besoin de barre oblique inverse (et de prendre la fuite).java.nio.file.FileSystems
Vous pouvez utiliser un FilenameFilter, comme suit:
+1
De penser la même chose que moi.Je sais, c'est une vieille question. Mais juste par souci d'exhaustivité, le lambda version.
Ont un coup d'oeil à
java.io.File.list()
etFilenameFilter
.Envisager de Apache Commons IO, il a une classe appelée FileUtils qui a un
listFiles
méthode qui pourrait être très utile dans votre cas.Pour dresser la liste des fichiers Json à partir de votre répertoire donné.
Appache commons IO divers
FilenameUtils.wildcardMatch
Voir Apache javadoc ici. Il correspond au générique le nom de fichier. Vous pouvez donc utiliser cette méthode pour vos comparaisons.
Comme @Clarke dit, vous pouvez utiliser
java.io.FilenameFilter
pour filtrer les fichiers par condition spécifique.Comme un complément, j'aimerais vous montrer comment utiliser
java.io.FilenameFilter
pour rechercher le fichier dans le répertoire courant et ses sous-répertoire.Les méthodes courantes getTargetFiles et printFiles sont utilisés pour rechercher les fichiers et les imprimer.
Je vais démo comment utiliser récursive, bfs et dfs pour faire le travail.
Récursive:
Largeur De Recherche:
Parcours En Profondeur D'Abord De Recherche:
/**
* Recherche autant que possible le long de chaque branche avant de mandature
*/
private void dfs(){
D'élaborer sur cette réponse, Apache IO Utils peut vous faire économiser du temps. Considérons l'exemple suivant qui recherche de manière récursive pour un fichier d'un nom donné:
Voir:
De Java 1.8, vous pouvez utiliser des Fichiers.liste pour obtenir un flux de données:
Vous donner le nom de votre fichier, le chemin d'accès du répertoire de recherche, et de le laisser faire le travail.
Utilisation:
Source:
Essayez startsWith regex pour \txt\temp\tempZERO0.txt:
Essayez endsWith regex pour \txt\temp\ZERO0temp.txt:
Essayez contient regex pour \txt\temp\tempZERO0tempZERO0temp.txt: