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; } }

    输出结果

  • 相关阅读:
    scrapy 模块功能流程--转
    CP三次握手和四次分手--转
    获取免费IP--代码--转
    爬虫介绍+Jupyter Notebook--转
    In Ubuntu, How to install Chinese Pinyin with Fcitx?
    对json文件进行简单读写操作
    ubuntu 中wget (下载)命令用法
    如何更改Ubuntu 16.04 默认Python版本方法
    如何将本地文件上传通过命令行命令上传到远程服务器上
    Ubuntu上,如何成功的安装pygrib
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11510196.html
Copyright © 2011-2022 走看看