zoukankan      html  css  js  c++  java
  • Java文件与类动手动脑

    动手动脑1:

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

    package classJava;
    
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.FileVisitOption;
    import java.nio.file.FileVisitResult;
    import java.nio.file.FileVisitor;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.EnumSet;
    
    
    public class titletwo implements FileVisitor<Object> {
     private long accepted_size;
     public  void titletwo(String glob,long accepted_size) {
          FileSystems.getDefault().getPathMatcher("glob:" +glob);
          this.accepted_size=accepted_size; 
        }
        void search(Path file) throws IOException {
        long size = (Long) Files.getAttribute(file, "basic:size");
        if(size ==accepted_size) {    
            System.out.println(file);
        }
        
       }
       
        @Override
       public FileVisitResult postVisitDirectory(Object dir, IOException exc)throws IOException {   
           return FileVisitResult.CONTINUE;
       }
       
        @Override
       public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs)throws IOException {    
           return FileVisitResult.CONTINUE;
       }
       
        @Override
       public FileVisitResult visitFile(Object file, BasicFileAttributes attrs)throws IOException {
       search((Path) file);     
       return  FileVisitResult.CONTINUE;
       }
       
        @Override
       public FileVisitResult visitFileFailed(Object file, IOException exc)throws IOException {  
           return FileVisitResult.CONTINUE;
       }
         
       public static void main(String[] args) throws IOException{  
           String glob=  "*.jpg";      
           long size = 28672;    
           Path fileTree = Paths.get("D:/");  
           titletwo walk=new titletwo();   
           EnumSet<FileVisitOption> opts=EnumSet.of(FileVisitOption.FOLLOW_LINKS);    
           System.out.println("D盘中大小等于28672字节的文件有");   
           Files.walkFileTree(fileTree, opts, Integer.MAX_VALUE, walk);
       }
    }

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

    package classJava;
    
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.PathMatcher;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    
    public class titletwo {
    
        public static void main(String args[]) throws IOException {
            String glob = "glob:**/*.{java,txt}";
            String path = "D:/";
            match(glob, path);
        }
    
        public static void match(String glob, String location) throws IOException {
    
            final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);
    
            Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
    
                @Override
                public FileVisitResult visitFile(Path path,
                        BasicFileAttributes attrs) throws IOException {
                    if (pathMatcher.matches(path)) {
                        System.out.println(path);
                    }
                    return FileVisitResult.CONTINUE;
                }
    
                @Override
                public FileVisitResult visitFileFailed(Path file, IOException exc)
                        throws IOException {
                    return FileVisitResult.CONTINUE;
                }
            });
        }
    
    }

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

    package classJava;
    
    import java.io.IOException;
    import java.io.*;
    import java.nio.file.FileSystems;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.PathMatcher;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    
    public class titletwo {
    
        public static void main(String args[]) throws IOException {
            String glob = "glob:**/*.txt";
            String path = "D:\wenjian";
            match(glob, path);
        }
    
        public static void match(String glob, String location) throws IOException {
    
            final PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher( glob);
    
            Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
    
                @Override
                public FileVisitResult visitFile(Path path,
                        BasicFileAttributes attrs) throws IOException {
                    if (pathMatcher.matches(path)) {
                     BufferedReader reader =Files.newBufferedReader(path);//读取文件内的内容 
                      String line=null;
                      while((line = reader.readLine())!=null) {
                       if(line.equals("account"))//若读取的内容等于“account"则输出文件名
                       {
                             System.out.println(path);
                             break;
                       }
                       
                      }
                    }
                      return FileVisitResult.CONTINUE;
                }
    
                @Override
                public FileVisitResult visitFileFailed(Path file, IOException exc)
                        throws IOException {
                    return FileVisitResult.CONTINUE;
                }
            });
        }
    
    }

    动手动脑2:

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

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

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

  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/vvxvv/p/11808524.html
Copyright © 2011-2022 走看看