动手动脑 1:
使用 Files. walkFileTree()找出指定文件夹下所有大于指定大小 (比如 1M) 的文件.
- package classJava;
- import java.io.IOException;
- 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 titletwo implements FileVisitor<Object> {
- private long accepted_size;
- public void titletwo(String glob,long accepted_size) {
- FileSystems.getDefault().getPathMatcher("glob:" +glob);
- this.accepted_size=accepted_size;
- }
- void search(Path file) throws IOException {
- long size = (Long) Files.getAttribute(file, "basic:size");
- if(size ==accepted_size) {
- System.out.println(file);
- }
- }
- @Override
- public FileVisitResult postVisitDirectory(Object dir, IOException exc)throws IOException {
- 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 IOException {
- search((Path) file);
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult visitFileFailed(Object file, IOException exc)throws IOException {
- return FileVisitResult.CONTINUE;
- }
- public static void main(String[] args) throws IOException{
- String glob= "*.jpg";
- long size = 28672;
- Path fileTree = Paths.get("D:/");
- titletwo walk=new titletwo();
- EnumSet<FileVisitOption> opts=EnumSet.of(FileVisitOption.FOLLOW_LINKS);
- System.out.println("D 盘中大小等于 28672 字节的文件有");
- Files.walkFileTree(fileTree, opts, Integer.MAX_VALUE, walk);
- }
- }
使用 Files. walkFileTree()找出指定文件夹下所有扩展名为. txt 和. java 的文件.
- package classJava;
- import java.io.IOException;
- import java.nio.file.FileSystems;
- import java.nio.file.FileVisitResult;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.PathMatcher;
- import java.nio.file.Paths;
- import java.nio.file.SimpleFileVisitor;
- import java.nio.file.attribute.BasicFileAttributes;
- public class titletwo {
- public static void main(String args[]) throws IOException {
- String glob = "glob:**/*.{java,txt}";
- String path = "D:/";
- match(glob, path);
- }
- public static void match(String glob, String location) throws IOException {
- final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);
- Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path path,
- BasicFileAttributes attrs) throws IOException {
- if (pathMatcher.matches(path)) {
- System.out.println(path);
- }
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult visitFileFailed(Path file, IOException exc)
- throws IOException {
- return FileVisitResult.CONTINUE;
- }
- });
- }
- }
使用 Files. walkFileTree()找出指定文件夹下所有包容指定字符串的 txt 文件.
- package classJava;
- import java.io.IOException;
- import java.io.*;
- import java.nio.file.FileSystems;
- import java.nio.file.FileVisitResult;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.PathMatcher;
- import java.nio.file.Paths;
- import java.nio.file.SimpleFileVisitor;
- import java.nio.file.attribute.BasicFileAttributes;
- public class titletwo {
- public static void main(String args[]) throws IOException {
- String glob = "glob:**/*.txt";
- String path = "D:\\wenjian";
- match(glob, path);
- }
- public static void match(String glob, String location) throws IOException {
- final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);
- Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
- @Override
- public FileVisitResult visitFile(Path path,
- BasicFileAttributes attrs) throws IOException {
- if (pathMatcher.matches(path)) {
- BufferedReader reader =Files.newBufferedReader(path);// 读取文件内的内容
- String line=null;
- while((line = reader.readLine())!=null) {
- if(line.equals("account"))// 若读取的内容等于 "account" 则输出文件名
- {
- System.out.println(path);
- break;
- }
- }
- }
- return FileVisitResult.CONTINUE;
- }
- @Override
- public FileVisitResult visitFileFailed(Path file, IOException exc)
- throws IOException {
- return FileVisitResult.CONTINUE;
- }
- });
- }
- }
动手动脑 2:
java.nio.file.WatchService 文件系统监视服务的接口类, 它的具体实现由监视服务提供者负责加载.
java.nio.file.Watchable 实现了 java.nio.file.Watchable 的对象才能注册监视服务 WatchService.java.nio.file.Path 实现了 watchable 接口, 后文使用 Path 对象注册监视服务.
java.nio.file.WatchKey 该类代表着 Watchable 对象和监视服务 WatchService 的注册关系. WatchKey 在 Watchable 对象向 WatchService 注册的时候被创建. 它是 Watchable 和 WatchService 之间的关联类.
来源: http://www.bubuko.com/infodetail-3281150.html