《程序员修炼之道》-读书笔记三-NIO文件操作

2.3. 处理目录和目录树

2.3.1 在目录中查找文件: 

  在Java7新加入的 java.nio.file.DirectoryStream接口和它的实现类提供了很多功能

Path dir = Paths.get("D:\\BaiduNetdiskDownload");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.rar")) {
for (Path entry : stream) {
System.out.println(entry.getFileName());
}
} catch (IOException e) {
e.printStackTrace();
}

2.3.2 遍历目录树

遍历目录树需要掌握一些接口及其实现的细节。其中的关键方法是:

  Files.walkFileTree(Path start, FileVisitor<? super Path> visitor)

列出子目录下所有以.java结尾的文件

public class Find {
public static void main(String[] args) throws IOException {
Path startinfDir = Paths.get("D:\\work");
Files.walkFileTree(startinfDir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (file.toString().endsWith(".java")) {
System.out.println(file.getFileName());
}
return FileVisitResult.CONTINUE;
}
});
}
}

 SimpleFileVisitor<T>是FileVisitor<? super Path>的默认实现类,我们要完成的大部分操作,比如遍历目录,只需要重写visitFile(Path file, BasicFileAttributes attrs)方法

2.4 NIO.2的文件系统I/O

2.4.1 创建和删除文件

只需要调用Files类里的辅助方法,就可以很容易的创建和删除文件.

Path target = Paths.get("D:\\Backup\\MyStuff.txt");
Files.createFile(target);
//
Files.delete(target);

2.4.2 复制和移动文件

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
Path source = Paths.get("D:\\Backup\\MyStuff.txt");
Path target = Paths.get("D:\\test.txt");
Files.copy(source, target, REPLACE_EXISTING);
//
Files.move(source, target, REPLACE_EXISTING);
posted @ 2019-07-09 09:24  草莓罐头  阅读(130)  评论(0编辑  收藏  举报