Fichiers Java 8.marcher ne pas retourner tous les chemins
Voici la méthode
public List<Path> listAllPaths() throws IOException {
Files.walk(Paths.get("/tmp")).forEach(e -> System.out.println(e.toString()));
return Files.walk(Paths.get(filePath)).collect(Collectors.toList());
}
Lorsque j'exécute cette méthode, je ne vois que /tmp imprimé et renvoyé J'espérais voir tous les sous-répertoires et fichiers à l'intérieur
Javadoc, dit -
"Renvoie un flux qui est paresseusement rempli avec Path en parcourant l'arborescence des fichiers enracinée dans un fichier de départ donné. L'arborescence des fichiers est parcourue en profondeur-tout d'abord, les éléments du flux sont des objets Path qui sont obtenus comme en résolvant le chemin relatif par rapport à start."
1 answers
C'est un lien symbolique, pas un chemin réel :
Path p = Paths.get("/tmp");
System.out.println(Files.isSymbolicLink(p)); // returns true
Le chemin réel est /private/tmp
Vous pouvez faire un
ls -l
Et voir que certains des dossiers appartiennent à _mbsetupuser utilisateur.
Vous pouvez également parcourir les liens symboliques comme le suggèrent les commentaires via:
Files.walk(Paths.get("/tmp"), FileVisitOption.FOLLOW_LINKS)