Java的动手动脑(七)

日期:2018.11.18

博客期:025

星期日

  Part 1:使用 Files.walkFileTree()来找出指定文件夹下以.txt和.java为后缀的文件

 1 package temp;
 2 
 3 import java.io.IOException;
 4 import java.nio.file.FileVisitResult;
 5 import java.nio.file.Files;
 6 import java.nio.file.Path;
 7 import java.nio.file.Paths;
 8 import java.nio.file.SimpleFileVisitor;
 9 import java.nio.file.attribute.BasicFileAttributes;
10 import java.util.LinkedList;
11 import java.util.List;
12 
13 public class FindFile2 {
14     public void test2() throws IOException{
15         Path path = Paths.get("D:\\test\\hold1");
16         //Path path = fileSystem.getPath("c:/windows");
17         List<String> result = new LinkedList<String>();
18         Files.walkFileTree(path,new FilterFilesVisitor(result));
19         System.out.println("result.size()=" + result.size());
20         for (String name : result) {
21             System.out.println(name);
22         }
23     }
24     public void test3() throws IOException{
25         Path path = Paths.get("D:\\test\\hold1");
26         List<String> result = new LinkedList<String>();
27         Files.walkFileTree(path,new FilterFilesVisitor2(result));
28         System.out.println("result.size()=" + result.size());
29         for (String name : result) {
30             System.out.println(name);
31         }
32     }
33     public static void main(String[] args) throws IOException {
34         FindFile2 t = new FindFile2();
35                 t.test2();
36         t.test3();
37     }
38     
39 }
40 class FilterFilesVisitor extends SimpleFileVisitor<Path> {
41 
42     private List<String> result = new LinkedList<String>();
43 
44     public FilterFilesVisitor(List<String> result) {
45         this.result = result;
46     }
47 
48     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
49         if (file.toString().endsWith(".txt")) {
50             result.add(file.toString());
51         }
52         return FileVisitResult.CONTINUE;
53     }
54 }
55 class FilterFilesVisitor2 extends SimpleFileVisitor<Path> {
56 
57     private List<String> result = new LinkedList<String>();
58 
59     public FilterFilesVisitor2(List<String> result) {
60         this.result = result;
61     }
62 
63     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
64         if (file.toString().endsWith(".java")) {
65             result.add(file.toString());
66         }
67         return FileVisitResult.CONTINUE;
68     }
69 }            
FindFile2.java

  运行截图:

  解说:实际上这个就是继承一下 模板类 SimpleFileVisitor<Path> 的基础属性,然后自己定义我们自己的应用方法。不会的园友要实现文件的查找,只需按照以上模板修改file.toString().endsWith(".txt")里的语句即可,如上代码也可以直接写file.toString().endsWith(".txt")||file.toString().endsWith(".java"),嗯?是不是很好理解?

  Part 2: Files.walkFileTree()来找出指定文件夹下含有特殊字符串的.txt文件

扫描二维码关注公众号,回复: 4133410 查看本文章
 1 class FilterFilesVisitor3 extends SimpleFileVisitor<Path> {
 2 
 3     private List<String> result = new LinkedList<String>();
 4 
 5     public FilterFilesVisitor3(List<String> result) {
 6         this.result = result;
 7     }
 8 
 9     public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
10         if (file.toString().endsWith(".txt")&&(file.toString().contains("no")||file.toString().contains("on"))) {
11             result.add(file.toString());
12         }
13         return FileVisitResult.CONTINUE;
14     }
15 }
FilterFilesVisitor3.java

  运行截图:

  解说:这个实际上,就是更改判定的问题,配合上边代码实现任务!

初步完成:2018-11-18 20:32

修改完成:2018-11-19 9:19

猜你喜欢

转载自www.cnblogs.com/onepersonwholive/p/9979225.html