Je cherche un moyen d'obtenir tous les noms de répertoires dans un répertoire donné, mais pas les fichiers.
Par exemple, supposons que j'ai un dossier appelé Parent
, et à l'intérieur de celui-ci, j'ai 3 dossiers: Child1
Child2
et Child3
.
Je veux obtenir les noms des dossiers, mais je ne me soucie pas du contenu ni des noms des sous-dossiers dans Child1, Child2, etc.
Y a-t-il un moyen simple de faire cela?
Vous pouvez utiliser String[] directories = file.list()
pour répertorier tous les noms de fichiers, puis utiliser loop pour vérifier chaque sous-fichier et utiliser la fonction file.isDirectory()
pour obtenir les sous-répertoires.
Par exemple:
File file = new File("C:\\Windows");
String[] names = file.list();
for(String name : names)
{
if (new File("C:\\Windows\\" + name).isDirectory())
{
System.out.println(name);
}
}
Si vous utilisez Java 7, essayez d’utiliser le support fourni dans
package Java.nio.file
Si votre répertoire contient de nombreuses entrées, il pourra commencer à les lister sans toutes les lire en mémoire au préalable. plus de détails dans le javadoc: http://docs.Oracle.com/javase/7/docs/api/Java/nio/file/Files.html#newDirectoryStream(Java.nio.file.Path,%20Java.lang .Chaîne)
Voici également cet exemple adapté à vos besoins:
public static void main(String[] args) {
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path file) throws IOException {
return (Files.isDirectory(file));
}
};
Path dir = FileSystems.getDefault().getPath("c:/");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
for (Path path : stream) {
// Iterate over the paths in the directory and print filenames
System.out.println(path.getFileName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void displayDirectoryContents(File dir) {
try {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory Name==>:" + file.getCanonicalPath());
displayDirectoryContents(file);
} else {
System.out.println("file Not Acess===>" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
==== dans la classe/la méthode fournit File = URL ======
File currentDir = new File("/home/akshya/NetBeansProjects/");
displayDirectoryContents(currentDir);
}