Last active
August 5, 2020 04:46
-
-
Save zzjtnb/0e67450bec450fb66f78f63bcff5a753 to your computer and use it in GitHub Desktop.
nodejs同步遍历目录获取文件(包含路径)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 第一种 | |
| ```JavaScript | |
| const fs = require('fs') | |
| const path = require('path'); | |
| /** | |
| * 遍历目录里面的所有文件和目录 (同步) | |
| * @param {String} dir 目录名 | |
| * @param {Function} callback 找到一个文件时的回调 | |
| */ | |
| function eachFileSync(dir, callback) { | |
| fs.readdirSync(dir).forEach((filename) => { | |
| //获取当前文件的绝对路径 | |
| const fielder = path.join(dir, filename) | |
| if (fs.statSync(fielder).isDirectory()) { | |
| eachFileSync(fielder, callback) | |
| } else { | |
| callback(filename) | |
| } | |
| }) | |
| } | |
| /** | |
| * 列出目录下所有文件和目录 (同步) | |
| * @param {String} dir | |
| * @return {Array} Array | |
| */ | |
| function readSync(dir) { | |
| const fileList = [] | |
| eachFileSync(dir, (filename) => { | |
| fileList.push(filename) | |
| }) | |
| return fileList; | |
| }; | |
| module.exports = { | |
| readSync | |
| } | |
| ``` | |
| # 第二种 | |
| ```JavaScript | |
| const fs = require('fs') | |
| const path = require('path'); | |
| /** | |
| * 列出目录下所有文件和目录 (同步) | |
| * | |
| * @param {String} dir | |
| * @return {Array} | |
| */ | |
| function readSync(dir) { | |
| var files = []; | |
| eachFileSync(dir, (filename, stats) => { | |
| files.push(filename); | |
| }); | |
| return files; | |
| }; | |
| /** | |
| * 遍历目录里面的所有文件和目录 (同步) | |
| * @param {String} dir 目录名 | |
| * @param {Function} findOne 找到一个文件时的回调 | |
| */ | |
| function eachFileSync(dir, findOne) { | |
| var stats = fs.statSync(dir); | |
| // 遍历子目录 | |
| if (stats.isDirectory()) { | |
| var files = fullPath(dir, fs.readdirSync(dir)); | |
| // var files = fs.readdirSync(dir); | |
| //获取当前文件的绝对路径 | |
| files.forEach((f) => { | |
| eachFileSync(f, findOne); | |
| }); | |
| } else { | |
| findOne(dir, stats); | |
| } | |
| } | |
| /** | |
| * 将数组中的文件名转换为完整路径 | |
| * | |
| * @param {String} dir | |
| * @param {Array} files | |
| * @return {Array} | |
| */ | |
| function fullPath(dir, files) { | |
| return files.map(function (f) { | |
| return path.join(dir, f); | |
| }); | |
| } | |
| let data = readSync('../../../_posts') | |
| console.log(data); | |
| ``` | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment