首页 > 编程语言 > 详细

java使用新的(nio)遍历文件(支持文件后缀名、文件名正则表达式匹配)

时间:2019-09-12 10:20:05      阅读:389      评论:0      收藏:0      [点我收藏+]
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; } }

 

输出结果

技术分享图片

 

java使用新的(nio)遍历文件(支持文件后缀名、文件名正则表达式匹配)

原文:https://www.cnblogs.com/passedbylove/p/11510196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!