zoukankan      html  css  js  c++  java
  • java使用新的(nio)遍历文件(支持文件后缀名、文件名正则表达式匹配)

    import org.junit.Test;
    
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.List;
    
    public class TestParseJson {
        @Test
        public void test() throws IOException {
            Path startingDir = Paths.get("f:\temp");
            FindFileVisitor filterFilesVisitor= new FindFileVisitor(".wav","\d+{13}");
    
            Files.walkFileTree(startingDir, filterFilesVisitor);
    
            List<Path> files = filterFilesVisitor.getFilenameList();
            System.out.println(files);
        }
    }
    import java.nio.file.FileVisitResult;
    import java.nio.file.Path;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.LinkedList;
    import java.util.List;
    
    class FindFileVisitor extends SimpleFileVisitor<Path> {
    
        private List<Path> filenameList = new LinkedList<>();
        private String fileSuffix = null;
        private String pattern = null;
    
        public FindFileVisitor(String fileSuffix) {
            this.fileSuffix = fileSuffix;
        }
    
        public FindFileVisitor(String fileSuffix,String pattern)
        {
            this(fileSuffix);
            this.pattern = pattern;
        }
    
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
    
            String absPath = file.toString();
    
            Path fileName = file.getFileName();
    
            if (absPath.endsWith(fileSuffix)) {
    
                if(pattern != null)
                {
    //正则表达式+文件后缀名匹配整个文件名
    //例如pattern \d{13} 后缀.wav组成新的表达式 "\d{13}\.wav"
    if(!fileName.toString().matches(pattern + fileSuffix)) { return FileVisitResult.CONTINUE; } } filenameList.add(file.normalize()); } return FileVisitResult.CONTINUE; } public List<Path> getFilenameList() { return filenameList; } }

    输出结果

  • 相关阅读:
    Unity游戏开发之AR增强现实技术入门
    python3快速入门
    大数据Hadoop入门到精通 (精品课程)
    JavaScript基础训练营
    我的超级工具
    html5 postMessage 实现类似 sendMessage 的同步效果,支持跨域
    Centos7-驱动小米WIFI做AP
    rz快速上传文件到ssh服务器
    Ansible批量修改root密码
    ArcGIS API for JavaScript 入门教程[0] 目录
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11510196.html
Copyright © 2011-2022 走看看