微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过文件名中包含的文本查找文件

如何解决通过文件名中包含的文本查找文件

我有一个类似于下面的目录

xlsx-modules
├── 0-99
├── 100-199
│   ├── dr111.xls
│   ├── DR115.xls
│   └── DR130.xls
├── 200-299
└── 300-399
    └── DR303.xlsx

我尝试获取文件名包含代码文件的路径。例如,代码为 111 的搜索应返回 xlxs-modules/100-199/dr111.xls

搜索了信息或示例但没有成功,可以指导我如何实现这一目标。问候和感谢

解决方法

我必须通过实施来解决这个问题

import * as fs from "fs";
import { join } from "path";

export function getFiles() {
  const files: string[] = [];

  function collectFiles(directory: string) {
    const fileList = fs.readdirSync(directory);

    for (const fileListElement of fileList) {
      const absolutePath = join(directory,fileListElement);

      if (fs.statSync(absolutePath).isDirectory()) {
        collectFiles(absolutePath);
      } else {
        files.push(absolutePath);
      }
    }
  }

  collectFiles(`${process.cwd()}/xlsx-modules`);

  return files;
}

这个函数递归地获取目录中文件的列表,我得到这样的结果

[
  "/home/a123/projects/xlsx-modules/100-199/dr115.xls","/home/a123/projects/xlsx-modules/100-199/DR130.xls","/home/a123/projects/xlsx-modules/100-199/DR111.xls","/home/a123/projects/xlsx-modules/300-399/DR303.xlsx"
]

我使用这个函数来获取文件路径,然后做一些字符串匹配

getModuleBy(code: string) {
  const files: string[] = getFiles();
  const file = files.find((file) => file.includes(code));

  if (!file) {
    throw new NotFoundException(`Module with code ${code} not found`);
  }

  return file;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?