如何导入一个文件,其中文件名的部分变化非常频繁?

How to import a file , where the part of the file name get changes very frequently?

我正在尝试导入一个文件,文件名的一部分经常更改。当前日期是文件名的一部分。所以它经常发生变化。

下面是我导入文件的代码。因为它的名字改变了 如何在每天不更改文件名的情况下导入文件?

var CusInfo = path.join(__dirname,' CusInfo_2018_05-17.txt');

这是我们使用 fs 库读取目录内容并搜索包含 'CusInfo'.

的文件的示例
import fs from 'fs';

let contents = fs.readDirSync('./foo');

for(let x = 0; x < contents.length; x++){
 if(contents[x].includes('CusInfo')){
    // Do more checks or use the file or save to another variable.
   }
}

现在,如果文件名因日期而更改,您仍然可以找到一个或多个文件。

鉴于您要读取的文件名称每天都在变化,如果您不想对名称进行硬编码,则需要在代码中描述相同的命名规则。

由于(我假设)您只想将今天的数据放在 txt 文件的路径中,只需将其放入文件名即可。您可以像这样使用 moment 来做到这一点:

const moment = require('moment');
const fs = require('fs');

const now = moment();
const fileName = `CusInfo_${now.format('YYYY_MM-DD')}.txt`;

fs.readFileSync(fileName);

现在这很可能会引发错误,因为无法保证 txt 文件已经创建。

要处理此问题,请在实际读取文件之前使用 fs.access()

fs.access(fileName, fs.constants.F_OK, (err) => {
    if (err) {
        fileName = `CusInfo_${now.add(-1, 'days').format('YYYY_MM-DD')}.txt`;
    }

    fs.readFileSync(fileName)
}

以上代码将检查今天的 txt 文件是否存在,如果不存在,将更改昨天的文件名 txtfile.