lire la structure du système de fichiers depuis Java

Est-il possible de lire tous les noms de dossiers (pas les sous-dossiers) dans un répertoire et de sauvegarder la liste dans une ArrayList , etc.?

Par exemple, si un répertoire contient les dossiers suivants: CLIENT1, CLIENT2, CLIENT3, etc.

Les dossiers se trouvent dans un serveur Unix, de sorte que le code Java ou un script shell (bash / tcsh / etc) ou leur combinaison feraient l’affaire.

Essaye ça:

 File dir = new File("directoryName"); File temp; Ssortingng[] children = dir.list(); if (children !=null) { for (int i=0; i 

L’extrait de code Java ci-dessous devrait vous aider. Il renverra la liste de tous les dossiers dans un répertoire. Il peut renvoyer une liste vide en fonction de la manière dont vous traitez les éventuelles exceptions d’E / S.

 public List getDirectoriesInFolder(Ssortingng folderPath) { List folderNames = new ArrayList(); try { File directory = new File (folderPath); Ssortingng[] allFilesInFolder = directory.list(); for(Ssortingng fileName : allFilesInFolder) { File f = new File(fileName); if(f.isDirectory) { folderNames.add(fileName); } } } catch(IOException iex) { //Do any exception handling here... } return folderNames; } 

Si vous voulez le faire en utilisant un script Shell, les instructions fournies dans les liens ci-dessous devraient vous aider à trouver une solution:

aide avec script pour lister les répertoires

bash: met la sortie de ls dans un tableau

Cela me semblerait légèrement plus propre qu’une itération franche qui construit un new File() chaque fois.

 public class DirFilter implements FileFilter { public static FileFilter INSTANCE = new DirFilter(); @Override public boolean accept(File file) { return file.isDirectory(); } } File startDir = .....; List children = Arrays.asList(startDir.listFiles(DirFilter.INSTANCE));