按名称搜索文件
import java.io.IOException;/*来 自 nowjava.com - 时 代 Java*/ import java.nio.file.FileSystems; import java.nio.file.FileVisitOption; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; import java.util.EnumSet; public class Main { public static void main(String[] args) throws Exception { Path searchFile = Paths.get("test.jpg"); Search walk = new Search(searchFile); EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS); Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories(); for (Path root : dirs) { if (!walk.found) { Files.walkFileTree(root, opts, Integer.MAX_VALUE, walk); }/*from 时 代 J a v a 公 众 号*/ } if (!walk.found) { System.out.println("The file " + searchFile + " was not found!"); } } } class Search implements FileVisitor { private final Path searchedFile; public boolean found; public Search(Path searchedFile) { this.searchedFile = searchedFile; this.found = false; } void search(Path file) throws IOException { Path name = file.getFileName(); if (name != null && name.equals(searchedFile)) { System.out.println("Searched file was found: " + searchedFile + " in " + file.toRealPath().toString()); found = true; } } @Override public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException { System.out.println("Visited: " + (Path) dir); return FileVisitResult.CONTINUE; } @Override public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws