如何导入文件,文件名的一部分经常变化?

时间:2018-05-17 12:09:15

标签: javascript node.js node-modules

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

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

  

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

2 个答案:

答案 0 :(得分:0)

以下是我们使用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.
   }
}

现在,如果文件名由于日期而发生变化,您仍然可以找到一个或多个文件。

答案 1 :(得分:0)

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

因为(我假设)你只想将今天的数据放在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文件是否存在,如果没有,将会更改昨天txt文件的文件名。