Java - Recherche de fichiers dans un répertoire
C'est censé être simple, mais je ne peux pas le faire - "Écrire un programme qui effectue des recherches pour un nom de fichier dans un répertoire donné." J'ai trouvé quelques exemples d'une codé en dur le nom de fichier et de répertoire, mais j'ai besoin à la fois de la dir et un nom de fichier pour être entré par l'utilisateur.
public static void main(String[] args) {
String fileName = args[0]; //For the filename declaration
String directory;
boolean found;
File dir = new File(directory);
File[] matchingFiles = dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String fileName) {
return true;
}
});
}
source d'informationauteur A C
Vous devez vous connecter pour publier un commentaire.
vous pouvez essayer quelque chose comme ceci:
Voici le résultat:
Cela ressemble à des devoirs à faire à la question, donc je vais juste vous donner quelques conseils:
Essayer de donner de bons distinctif des noms de variables. Ici vous avez utilisé "nom de fichier" d'abord pour le répertoire, puis pour le fichier. Qui prête à confusion, et ne vous aidera pas à résoudre le problème. Utiliser des noms différents pour différentes choses.
Vous n'utilisez pas le Scanner pour rien, et il n'est pas nécessaire ici, de s'en débarrasser.
En outre, l'accepter méthode doit retourner une valeur booléenne. Maintenant, vous essayez de renvoyer une Chaîne de caractères. Boolean signifie qu'il doit retourner true ou false. Par exemple
return a > 0;
peut renvoyer true ou false, selon la valeur de un. Maisreturn fileName;
va juste retourner la valeur de nom de fichier, qui est une Chaîne de caractères.Si vous souhaitez utiliser une dynamique de nom de fichier de filtre, vous pouvez mettre en œuvre FilenameFilter et passer dans le constructeur de la dynamique nom.
Bien sûr, cela implique que vous devez instancier chaque fois que la classe (frais généraux), mais il fonctionne
Exemple:
puis servez-vous où vous en avez besoin:
**Java 8* il y a une autre solution, utiliser les flux et les lambdas:
Ce qui permettra d'imprimer tous les fichiers de manière récursive:
Et ce sera la recherche d'un fichier:
J'ai utilisé une approche différente pour rechercher un fichier à l'aide de pile.. en gardant à l'esprit qu'il pourrait y avoir des dossiers à l'intérieur d'un dossier. Bien que son pas plus rapide que la recherche de windows(et je ne m'attendais pas que si) mais ça donne de bon résultat. Veuillez modifier le code comme vous le souhaitez. Ce code a été réalisé à l'origine pour extraire le fichier chemin d'accès de certains d'extension de fichier :). Se sentir libre pour optimiser.
Le code Suivant permet de rechercher un fichier dans le répertoire et ouvrir son emplacement