119 votes

Java, liste uniquement les sous-répertoires d'un répertoire, pas les fichiers

En Java, comment lister uniquement les sous-répertoires d'un répertoire ?

J'aimerais utiliser la fonctionnalité java.io.File. Quelle est la meilleure méthode en Java pour le faire ?

0voto

Jonathon Faust Points 7543

Étant donné un répertoire de départ comme String

  1. Créez une méthode qui prend un String comme paramètre. Dans la méthode :
  2. Créer un nouveau Fichier basé sur le répertoire de départ
  3. Obtenir un tableau de fichiers dans le répertoire courant en utilisant la fonction listFiles méthode
  4. Boucle sur le tableau des fichiers
    1. Si c'est un fichier, continuer la boucle
    2. S'il s'agit d'un répertoire, imprimez le nom et l'adresse de ce dernier. Récupérer sur ce nouveau chemin de répertoire

0voto

Tabby Auguste Points 13

Voici la solution pour mon code. J'ai juste fait un petit changement à partir de la première réponse . Ceci listera tous les dossiers uniquement dans le répertoire souhaité, ligne par ligne :

try {
            File file = new File("D:\\admir\\MyBookLibrary");
            String[] directories = file.list(new FilenameFilter() {
              @Override
              public boolean accept(File current, String name) {
                return new File(current, name).isDirectory();
              }
            });
            for(int i = 0;i < directories.length;i++) {
                if(directories[i] != null) {
                    System.out.println(Arrays.asList(directories[i]));

                }
            }
        }catch(Exception e) {
            System.err.println("Error!");
        }

0voto

Vous pouvez utiliser l'api JAVA 7 Files

Path myDirectoryPath = Paths.get("path to my directory");
List<Path> subDirectories = Files.find(
                    myDirectoryPath ,
                    Integer.MAX_VALUE,
                    (filePath, fileAttr) -> fileAttr.isDirectory() && !filePath.equals(myDirectoryPath )
            ).collect(Collectors.toList());

Si vous voulez une valeur spécifique, vous pouvez appeler map avec la valeur que vous voulez avant de collecter les données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X