关于前端:node的readDirFilesreadFileSync-的一些实操脚本

30次阅读

共计 1519 个字符,预计需要花费 4 分钟才能阅读完成。

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
算法:递归

正文完
 0