繁体   English   中英

从文件名数组中搜索 Nodejs 文件

[英]Nodejs File Search from Array of Filenames

我正在尝试根据文件名数组和根目录进行文件搜索。 我在网上找到了一些文件搜索片段,当我只找到 1 个文件时,它们似乎可以工作,但是当指定了 1 个以上的文件时,它就不起作用了。 下面是片段:

 const fs = require('fs'); const path = require('path'); var dir = '<SOME ROOT DIRECTORY>'; var file = 'Hello_World.txt' var fileArr = ['Hello_World.txt', 'Hello_World2.txt', 'Hello_World3.txt']; const findFile = function (dir, pattern) { var results = []; fs.readdirSync(dir).forEach(function (dirInner) { dirInner = path.resolve(dir, dirInner); var stat = fs.statSync(dirInner); if (stat.isDirectory()) { results = results.concat(findFile(dirInner, pattern)); } if (stat.isFile() && dirInner.endsWith(pattern)) { results.push(dirInner); } }); return results; }; console.log(findFile(dir, file));

关于如何使用数组而不仅仅是单个文件字符串的任何想法?

执行以下操作似乎有效,但不知道是否还有其他方法可以更简单地执行此操作:

 newFileArr = []; fileArr.forEach((file => { //findFile(dir, file).toString(); console.log(findFile(dir, file).toString()); }));

唯一需要更改的是确定单个文件路径是否满足搜索条件的条件。 在您发布的代码中,它看起来像dirInner.endsWith(pattern) ,它表示“文件路径是否以给定的模式结尾?”

我们想将其更改为“文件路径是否以任何给定的模式结尾?” 更接近代码的外观,我们可以将其重新表述为“我们能否找到一个给定的模式,使文件路径以该模式结束?”

让我们将pattern重命名为patterns 然后我们可以简单地将dirInner.endsWith(patterns)替换为patterns.some(pattern => dirInner.endsWith(pattern))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM