Je voudrais vérifier si le répertoire est vide en Java. Mais il est possible qu'il y ait beaucoup de fichiers dans ce répertoire, j'aimerais donc le faire sans interroger sa liste de fichiers, si possible.
Réponses
Trop de publicités?Avec JDK7, vous pouvez utiliser Files.newDirectoryStream pour ouvrir le répertoire, puis utiliser la méthode hasNext() de l'itérateur pour tester s'il y a des fichiers sur lesquels itérer (n'oubliez pas de fermer le flux). Cela devrait mieux fonctionner pour les répertoires volumineux ou lorsque le répertoire se trouve sur un système de fichiers distant par rapport aux méthodes de liste java.io.File.
Exemple:
private static boolean isDirEmpty(final Path directory) throws IOException {
try(DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory)) {
return !dirStream.iterator().hasNext();
}
}
boolean isEmptyDirectory(Path dir) throws IOException {
try (var entries = Files.list(dir)) {
return entries.count() == 0;
}
}
Semblable à la solution de @Minnow (mais avec moins d'appels de méthode), cette solution présente l'avantage "Comme Files.list renvoie un flux peuplé paresseusement, cela résoudra votre problème lié au temps d'exécution".