随笔- 191  文章- 0  评论- 3  阅读- 59139 
复制代码
import fs from "fs";
import path from "path";

const find = (
  folder: string,
  keyword: string[],
  callback: (val: string[]) => void
) => {
  type entryUnit = {
    name: string;
    fullPath: string;
  };
  let arr: entryUnit[] = []; // all the files in a array

  const iterateDir = (base: string) => {
    const curDir = fs.readdirSync(base);
    curDir.forEach((val) => {
      const entry = path.join(base, val);
      if (fs.statSync(entry).isDirectory()) {
        iterateDir(entry);
      } else {
        arr.push({
          name: val,
          fullPath: entry,
        });
      }
    });
  };

  iterateDir(folder);

  callback(
    arr
      .filter((val) => keyword.find((key) => val.name === key))
      .map((val) => val.fullPath)
  );
};

find("./", ["index.html", "qq.png"], (arr) => {
  console.log(arr);
});
复制代码

自定义过滤器:

const find = (folder, filter, callback) => {
  let arr = []; // all the files in a array

  const iterateDir = (base) => {
    const curDir = fs.readdirSync(base);
    curDir.forEach((val) => {
      const entry = path.join(base, val);
      if (fs.statSync(entry).isDirectory()) {
        iterateDir(entry);
      } else {
        arr.push({
          name: val,
          fullPath: entry,
        });
      }
    });
  };

  iterateDir(folder);

  callback(arr.filter(filter).map((val) => val.fullPath));
};

find(
  "./",
  (val) => {
    return false;
  },
  (arr) => {
    console.log(arr);
  }
);

 

 posted on   laremehpe  阅读(265)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示