fs+path模块实例:【遍历文件夹下的所有文件,最后输出文件夹下所有的文件名】...

遍历文件夹下的所有文件,最后输出文件夹下所有文件名

功能描述

  • 给定一个路径,获取文件夹下所有文件
  • 给定一个路径,判断是文件还是文件夹
  • 如果是文件直接输出文件名
  • 如果是文件夹,继续遍历最终输出文件夹下的文件名

功能演示的效果图

功能实现的思路,以及所运用到的node 基础核心知识

  • path 拼接一个绝对路径,join方法能自动补齐路径,防止少层级或者多层级的问题。
//伪代码
let path = require('path');
let fpath = path.join(__dirname,a,b)
复制代码
  • fs 读取文件夹操作 fs.readdir(url,回调函数)
  • fs 判断是文件夹或者文件
  • 封装遍历的方法为一个功能模块,递归实现文件夹中子文件夹的深层嵌套。减少代码

代码实现部分

//遍历文件夹下的所有文件,最后输出文件夹下所有的文件名
//思路 使用fs,path 模块
//1、先读取文件夹,获取文件的所有文件
//2、对获取的文件进行遍历,用fs.stat 获得文件状态,
//3、通过状态中的stat.isFile()判断是否是一个文件,是文件直接输出文件名,不是文件就继续递归。
let fs = require("fs");
let path = require("path");
let myurl = "E:/coding/"
function myReadfile(MyUrl) {
    fs.readdir(MyUrl, (err, files) => {
        if (err) throw err
        files.forEach(file => {
            //拼接获取绝对路径,fs.stat(绝对路径,回调函数)
            let fPath = path.join(MyUrl, file);
            fs.stat(fPath, (err, stat) => {
                if (stat.isFile()) {
                    //stat 状态中有两个函数一个是stat中有isFile ,isisDirectory等函数进行判断是文件还是文件夹
                    console.log(file)
                }
                else {
                    myReadfile(fPath)
                }
            })
        })
    })
}
myReadfile(myurl);

复制代码

小结

记录node 基础学习的一个小案例,欢迎一起交流学习。 絮尘飘飞

你可能感兴趣的:(fs+path模块实例:【遍历文件夹下的所有文件,最后输出文件夹下所有的文件名】...)