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

    输出结果

  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11510196.html
Copyright © 2020-2023  润新知