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)遍历文件(支持文件后缀名、文件名正则表达式匹配)

 

相关文章:

  • 2022-12-23
  • 2022-02-04
  • 2021-09-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
猜你喜欢
  • 2021-06-20
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
  • 2022-12-23
  • 2021-09-21
相关资源
相似解决方案