1、读取文件夹里面,所有是js的文件

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

// 读取文件夹中的所有文件
function readDirFiles(dir, fileList) {
  const files = fs.readdirSync(dir);
  fileList = fileList || [];

  files.forEach(function(file) {
    const filePath = path.join(dir, file);
    if (fs.statSync(filePath).isDirectory()) {
      fileList = readDirFiles(filePath, fileList);
    } else {
      if (filePath.endsWith('.js')) {
        fileList.push(filePath);
      }
    }
  });

  return fileList;
}

// 读取指定文件夹中的所有JS文件
const fileList = readDirFiles('./src');
console.log(fileList);

用到的node的api有:readdirSync、statSync、isDirectory、readDirFiles、endsWith用到算法:递归

2、用node的api实现一个脚本,读取某一个文件夹里所有的js代码,并读取输出到一个指定的文件里。

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

// 读取文件夹中的所有文件
function readDirFiles(dir, fileList) {
  const files = fs.readdirSync(dir);
  fileList = fileList || [];

  files.forEach(function(file) {
    const filePath = path.join(dir, file);
    if (fs.statSync(filePath).isDirectory()) {
      fileList = readDirFiles(filePath, fileList);
    } else {
      if (filePath.endsWith('.js')) {
        const content = fs.readFileSync(filePath, { encoding: 'utf-8' });
        fileList.push({ path: filePath, content });
      }
    }
  });

  return fileList;
}

// 将JS文件写入文件
function writeFile(fileList, outputPath) {
  const stream = fs.createWriteStream(outputPath);

  fileList.forEach(file => {
    const jsCode = `// File Path: ${file.path}
${file.content}

`;
    stream.write(jsCode);
  });

  stream.end();
}

// 读取指定文件夹中的所有JS文件,并将JS代码写入指定输出文件中
const fileList = readDirFiles('/path/to/your/folder');
writeFile(fileList, '/path/to/your/output.js');

用到的api:readdirSync、statSync、isDirectory、endsWith、readFileSync、createWriteStream

可以看出,对比问题1,多用了两个api,读取文件和写入文件readFileSync、createWriteStream算法:递归

作者:|健儿|,原文链接: https://segmentfault.com/a/1190000043558781

文章推荐

一分钟学一个 Linux 命令 - mkdir 和 touch

lua变量、数据类型、if判断条件和数据结构table以及【lua 函...

聊聊Redis sentinel 机制

逍遥自在学C语言 | 位运算符<<的高级用法

深入理解 python 虚拟机:字节码教程(2)——控制流是如何实现...

让代码变得优雅简洁的神器:Java8 Stream流式编程

MySQL 8.0:无锁可扩展的 WAL 设计

结构优于制度,软件开发中的康威定律

Linux xargs命令介绍

使用go切片应注意的一个小问题:copy函数的重要性

sql处理重复的列,更好理清分组和分区

自己动手写线程池——向JDK线程池进发