node 查询目标 目录下所有(文件或文件夹)名为 filename 的文件路径

话不多说,直接淦

const fs = require('fs')
const path = require('path')

/**
 * 查询目标 目录下所有文件或文件夹名为 filename 的文件路径
 * @param {String} dir  查询目录
 * @param {String} filename  查询文件的名称
 * @returns {Array} 所有满足条件的文件路径
 */
function getAllDirbyFilename(dir, filename) {
  let dirPath = path.resolve(__dirname, dir);
  let files = fs.readdirSync(dirPath); // 该文件夹下的所有文件名称 (文件夹 + 文件)
  let resultArr = [];

  files.forEach(file => {
    let filePath = dir + '/' + file; // 当前文件 | 文件夹的路径

    // 满足查询条件文件
    if (file === filename) {
      return resultArr.push(filePath);
    }

    // 继续深搜文件夹
    if (fs.statSync(filePath).isDirectory()) {
      resultArr.push(...getAllDirbyFilename(filePath, filename));
    }

  })

  return resultArr;
}

let fileArr = getAllDirbyFilename('./src', 'main.js');
console.log(fileArr);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 `fs` 模块的 `readdirSync` 和 `readFileSync` 方法来实现这个功能。 首先,使用 `readdirSync` 方法读取文件夹中的文件列表: ``` const fs = require('fs'); const path = require('path'); const directoryPath = path.join(__dirname, 'data'); const files = fs.readdirSync(directoryPath); ``` 然后,你可以使用 `for` 循环遍历文件列表,对每个文件使用 `readFileSync` 方法读取内容: ``` for (const file of files) { const filePath = path.join(directoryPath, file); const fileContent = fs.readFileSync(filePath, 'utf-8'); console.log(fileContent); } ``` 你还可以使用 `JSON.parse` 方法将文件内容解析为 JSON 对象: ``` for (const file of files) { const filePath = path.join(directoryPath, file); const fileContent = fs.readFileSync(filePath, 'utf-8'); const data = JSON.parse(fileContent); console.log(data); } ``` 希望这些信息能帮到你! ### 回答2: 使用Node.js中的`readFileSync`方法可以同步地读取文件内容。要读取data文件夹中的所有json文件,可以通过以下步骤实现: 1. 首先,导入Node.js的`fs`模块,该模块提供了文件系统相关的功能。 ```javascript const fs = require('fs'); ``` 2. 创建一个文件夹路径的变量,指向data文件夹路径。 ```javascript const folderPath = './data'; ``` 3. 使用`fs.readdirSync`方法读取data文件夹中的所有文件,并过滤出后缀名为`.json`的文件。 ```javascript const jsonFiles = fs.readdirSync(folderPath).filter(file => file.endsWith('.json')); ``` 4. 遍历jsonFiles数组,对每个json文件使用`readFileSync`方法读取文件内容。 ```javascript const jsonData = []; jsonFiles.forEach(file => { const filePath = `${folderPath}/${file}`; const fileData = fs.readFileSync(filePath, 'utf8'); const json = JSON.parse(fileData); jsonData.push(json); }); ``` 5. 最终,jsonData数组中包含了data文件夹中所有json文件的内容。 完整代码如下: ```javascript const fs = require('fs'); const folderPath = './data'; const jsonFiles = fs.readdirSync(folderPath).filter(file => file.endsWith('.json')); const jsonData = []; jsonFiles.forEach(file => { const filePath = `${folderPath}/${file}`; const fileData = fs.readFileSync(filePath, 'utf8'); const json = JSON.parse(fileData); jsonData.push(json); }); console.log(jsonData); ``` 请注意,以上代码假设data文件夹中的所有json文件的内容都是有效的JSON格式,否则在解析时可能会出现错误。 ### 回答3: 使用Node.js的readFileSync方法读取data文件夹中的所有JSON文件可以通过以下步骤完成: 1. 首先,需要引入Node.js的fs模块,该模块是用于文件操作的核心模块,可以使用以下语句引入: ``` const fs = require('fs'); ``` 2. 接下来,使用`fs.readdirSync()`方法读取data文件夹的内容,该方法返回一个包含文件名的数组,可以使用以下语句获取data文件夹中的所有文件名: ``` const fileNames = fs.readdirSync('./data'); ``` 3. 接下来,可以使用for循环遍历文件名数组,并使用`fs.readFileSync()`方法读取每个文件的内容。可以使用以下代码片段来实现: ``` fileNames.forEach((fileName) => { if (fileName.endsWith('.json')) { const filePath = `./data/${fileName}`; const fileContent = fs.readFileSync(filePath, 'utf-8'); const jsonData = JSON.parse(fileContent); // 对读取到的JSON数据进行后续处理 // ... } }); ``` 在以上代码中,首先判断文件名是否以`.json`结尾,以排除其他非JSON文件。然后构造文件的完整路径,使用`fs.readFileSync()`方法按照utf-8格式读取文件内容,并使用`JSON.parse()`方法将读取到的文件内容解析为JSON对象进行后续处理。 请注意,以上代码假设data文件夹与当前代码文件在同一目录下。如果data文件夹路径不同,需要相应修改`readdirSync()`方法中的路径参数和`readFileSync()`方法中的文件路径参数。 最后,根据具体需求,在上述代码的基础上,可以继续根据JSON数据进行后续操作,如解析、处理、存储等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值