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

    输出结果

  • 相关阅读:
    进程、线程、协程
    python垃圾回收机制
    python变量存储和深浅拷贝
    Linux常用命令
    二叉树四种遍历,节点个数,深度
    装饰器
    ArrayList、Vector
    集合、Collection、迭代器、List
    卖票
    关于Thread和Runnable
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11510196.html
Copyright © 2011-2022 走看看