日期: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 }
运行截图:
解说:实际上这个就是继承一下 模板类 SimpleFileVisitor<Path> 的基础属性,然后自己定义我们自己的应用方法。不会的园友要实现文件的查找,只需按照以上模板修改file.toString().endsWith(".txt")里的语句即可,如上代码也可以直接写file.toString().endsWith(".txt")||file.toString().endsWith(".java"),嗯?是不是很好理解?
Part 2: Files.walkFileTree()来找出指定文件夹下含有特殊字符串的.txt文件
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 }
运行截图:
解说:这个实际上,就是更改判定的问题,配合上边代码实现任务!
初步完成:2018-11-18 20:32
修改完成:2018-11-19 9:19