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."

Author: brain storm, 2017-02-15

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)
 3
Author: Eugene, 2017-02-16 11:02:50