java.nio.file.Path 接口
Path 引用一个文件、目录或者文件链接(快捷方式)。
创建 Path 实例的两种方法:
- 通过 FileSystem 对象:
1 | FileSystem fileSystem = FileSystem.getDefault(); |
- 通过 Path 类的静态方法
1 | Path path = Paths.get("文件路径"); |
复制、剪切和删除操作
1 | //复制文件 |
简单的读写操作
1 | // 读取文件的所有内容 |
遍历文件夹的一种方式
这种方法不会进入子目录
1 | package com.file; |
另一种方法
walkFileTree,构造方法如下:
1 | public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor) throws IOException |
FileVisitor 是一个接口,定义了四个方法:
- preVisitDirectory:访问文件夹前调用
- postVisitDirectory:访问文件夹后调用
- visitFile:访问文件时调用
- visitFileFailed:当指定文件不可访问时调用
JDK 中定义了 SimpleFileVisitor<> 实现了 FileVisitor 接口,我们可以继承 SimpleFileVisitor
1 | package com.file; |
查找文件
JDK7 中定义了一个 PathMatcher 接口,实现此接口的类可用于确定路径的匹配规范。
匹配规则有两种:一是诸如 “*.java” 之类的通配符,另一类是正则表达式。
JDK 中规定第一种匹配规则以 “glob:” 打头,第二种以 “regex:” 开头。
FileSystem.getDefault().getPathMatcher() 方法接收匹配字符串,返回一个可用的 PathMatcher 对象,程序之后就可以用它来进行文件名的匹配工作。
1 | package com.file; |
总结思路:
- 首先要遍历文件夹下面所有文件,所以必须使用 Files.walkFileTree 方法。
- 因为要对比文件的名字,所以需要重写 visitFile 方法,也就是说要自定义一个类,继承 SimpleFileVisitor
,然后重写 visiFile 方法。 - 对比文件名需要用到 PathMatcher,通过 FileSystems.getDefault().getPathMatcher 方法初始化一个 PathMatcher 对象。
- 对比文件是通过 PathMatcher 对象的 matches 方法。将符合条件的 Path 对象放入集合中,以便进行其他操作。