Próbuję napisać aplikację, aby użyć w niej metody Files.find
.Jak używać metody Java 8 `Files.find`?
Poniżej programu działa perfekcyjnie:
package ehsan;
/* I have removed imports for code brevity */
public class Main {
public static void main(String[] args) throws IOException {
Path p = Paths.get("/home/ehsan");
final int maxDepth = 10;
Stream<Path> matches = Files.find(p,maxDepth,(path, basicFileAttributes) -> String.valueOf(path).endsWith(".txt"));
matches.map(path -> path.getFileName()).forEach(System.out::println);
}
}
To działa prawidłowo i daje mi listę plików kończących się .txt
(pliki tekstowe aka):
hello.txt
...
ale poniżej programu nie pokazuje niczego:
package ehsan;
public class Main {
public static void main(String[] args) throws IOException {
Path p = Paths.get("/home/ehsan");
final int maxDepth = 10;
Stream<Path> matches = Files.find(p,maxDepth,(path, basicFileAttributes) -> path.getFileName().equals("workspace"));
matches.map(path -> path.getFileName()).forEach(System.out::println);
}
}
Ale nic nie pokazuje :(
Tu jest mój dom folderu hierarchi (ls
wynik):
blog Projects
Desktop Public
Documents Templates
Downloads The.Purge.Election.Year.2016.HC.1080p.HDrip.ShAaNiG.mkv
IdeaProjects The.Purge.Election.Year.2016.HC.1080p.HDrip.ShAaNiG.mkv.aria2
Music Videos
Pictures workspace
Więc co się dzieje złego path.getFileName().equals("workspace")
?
Czy próbowałeś użyć debuggera? – Jens
Pamiętaj, że musisz zamknąć 'Stream', który zwraca' Files.find (...) ', w przeciwnym razie masz wyciek zasobów; [Dokumenty API] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#find-java.nio.file.Path-int-java.util. function.BiPredicate-java.nio.file.FileVisitOption ...-) wyjaśnij to (zobacz, gdzie jest napisane "należy użyć konstrukcji try-for-resources ..."). – Jesper
IntelliJ ma bardzo dobry debugger (nie wiem, co masz na myśli z "debuggerem VS"). Możesz także po prostu umieścić instrukcje "System.out.println (...)" w punktach kodu, aby zobaczyć, co się dzieje. – Jesper