azure011328

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件。

复制代码
复制代码
 1 package com.test;
 2 import java.io.IOException;
 3 import java.nio.file.FileSystems;
 4 import java.nio.file.FileVisitOption;
 5 import java.nio.file.FileVisitResult;
 6 import java.nio.file.FileVisitor;
 7 import java.nio.file.Files;
 8 import java.nio.file.Path;
 9 import java.nio.file.Paths;
10 import java.nio.file.attribute.BasicFileAttributes;
11 import java.util.EnumSet;
12 
13 
14 public class File implements FileVisitor<Object> {
15  private final long accepted_size;
16  public  File(String glob,long accepted_size) {
17       FileSystems.getDefault().getPathMatcher("glob:" +glob);
18       this.accepted_size=accepted_size; 
19     }
20    void search(Path file) throws IOException {
21     long size = (Long) Files.getAttribute(file, "basic:size");
22     if(size <=accepted_size) {
23      System.out.println(file);
24     }
25    }
26    @Override
27    public FileVisitResult postVisitDirectory(Object dir, IOException exc)throws IOException {
28     return FileVisitResult.CONTINUE;
29    }
30    @Override
31    public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs)throws IOException {
32     return FileVisitResult.CONTINUE;
33    }
34    @Override
35    public FileVisitResult visitFile(Object file, BasicFileAttributes attrs)throws IOException {
36   search((Path) file);
37      return  FileVisitResult.CONTINUE;
38   }
39    @Override
40    public FileVisitResult visitFileFailed(Object file, IOException exc)throws IOException {
41   return FileVisitResult.CONTINUE;
42    }
43    
44    
45    public static void main(String[] args) throws IOException{
46     String glob=  "*.jpg";  
47     long size = 1024;
48     Path fileTree = Paths.get("D:/");
49     File walk=new File(glob, size);
50     EnumSet<FileVisitOption> opts=EnumSet.of(FileVisitOption.FOLLOW_LINKS);
51     System.out.println("D盘中大于等于1KB的文件有");
52     Files.walkFileTree(fileTree, opts, Integer.MAX_VALUE, walk);
53    }
54 }
复制代码
复制代码

 

 

 


 

2.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件。

复制代码
复制代码
 1 package com.test;
 2 import java.io.IOException;
 3 import java.nio.file.FileSystems;
 4 import java.nio.file.FileVisitResult;
 5 import java.nio.file.Files;
 6 import java.nio.file.Path;
 7 import java.nio.file.PathMatcher;
 8 import java.nio.file.Paths;
 9 import java.nio.file.SimpleFileVisitor;
10 import java.nio.file.attribute.BasicFileAttributes;
11 
12 public class File {
13 
14     public static void main(String args[]) throws IOException {
15         String glob = "glob:**/*.{java,txt}";
16         String path = "D:\\java\\eclipse-workspace\\testjava";
17         match(glob, path);
18     }
19 
20     public static void match(String glob, String location) throws IOException {
21 
22         final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);
23 
24         Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
25 
26             @Override
27             public FileVisitResult visitFile(Path path,
28                     BasicFileAttributes attrs) throws IOException {
29                 if (pathMatcher.matches(path)) {
30                     System.out.println(path);
31                 }
32                 return FileVisitResult.CONTINUE;
33             }
34 
35             @Override
36             public FileVisitResult visitFileFailed(Path file, IOException exc)
37                     throws IOException {
38                 return FileVisitResult.CONTINUE;
39             }
40         });
41     }
42 
43 }
复制代码
复制代码

 

 


 

3.使用Files. walkFileTree()找出指定文件夹下所有包容指定字符串的txt文件。

复制代码
复制代码
 1 package com.test;                                                                                                                    
 2 import java.io.IOException;                                                                                                          
 3 import java.nio.file.FileSystems;                                                                                                    
 4 import java.nio.file.FileVisitResult;                                                                                                
 5 import java.nio.file.Files;                                                                                                          
 6 import java.nio.file.Path;                                                                                                           
 7 import java.nio.file.PathMatcher;                                                                                                    
 8 import java.nio.file.Paths;                                                                                                          
 9 import java.nio.file.SimpleFileVisitor;                                                                                              
10 import java.nio.file.attribute.BasicFileAttributes;                                                                                  
11                                                                                                                                      
12  public class File {                                                                                                                 
13                                                                                                                                      
14     public static void main(String args[]) throws IOException {                                                                      
15          String glob = "glob:**/*.{java,txt}";                                                                                       
16          String path = "D:/";                                                                                                        
17         match(glob, path);                                                                                                           
18      }                                                                                                                               
19                                                                                                                                      
20      public static void match(String glob, String location) throws IOException {                                                     
21                                                                                                                                      
22          final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);                                             
23                                                                                                                                      
24          Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {                                                     
25                                                                                                                                      
26              @Override                                                                                                               
27              public FileVisitResult visitFile(Path path,                                                                             
28                      BasicFileAttributes attrs) throws IOException {                                                                 
29                  if (pathMatcher.matches(path)) {                                                                                    
30                      System.out.println(path);                                                                                       
31                 }                                                                                                                    
32                  return FileVisitResult.CONTINUE;                                                                                    
33              }                                                                                                                       
34                                                                                                                                      
35              @Override                                                                                                               
36              public FileVisitResult visitFileFailed(Path file, IOException exc)                                                      
37                      throws IOException {                                                                                            
38                 return FileVisitResult.CONTINUE;                                                                                     
39              }                                                                                                                       
40          });                                                                                                                         
41      }                                                                                                                               
42                                                                                                                                      
43  }                                                                                                                                   
复制代码
复制代码

 


 

二、动手动脑二

请通过查询JDK文件和使用搜索引擎等方式,看懂此示例代码,并弄明白Watchable、WatchService等类型之间的关系,使用UML类图表示出这些类之间的关系。

1.java.nio.file.WatchService文件系统监视服务的接口类,它的具体实现由监视服务提供者负责加载。

2.java.nio.file.Watchable 实现了 java.nio.file.Watchable 的对象才能注册监视服务 WatchService。java.nio.file.Path实现了 watchable 接口,后文使用 Path 对象注册监视服务。

3.java.nio.file.WatchKey 该类代表着 Watchable 对象和监视服务 WatchService 的注册关系。WatchKey 在 Watchable 对象向 WatchService 注册的时候被创建。它是 Watchable 和 WatchService 之间的关联类。

 

 

posted on   淮竹i  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
 
点击右上角即可分享
微信分享提示