node.js中封装获取一个给定路径下文件或者目录的信息

一、功能需求

封装函数:读取一个目录中所有子目录和文件

    返回为一个对象:
    属性:
    name : 文件名,
    ext : 后缀名,目录为空字符串
    isFile : 是否是一个文件
    size : 文件大小,目录为0
    createTime : 创建时间  日期对象
    updateTime : 修改时间 日期对象
    方法 :
    getChidren() : 获取当前目录的所有子文件对象,如果是文件,则返回空数组
    getContent(isBuffer = false): 读取文件内容,如果是文件夹则返回为null

二、功能实现

//导入fs文件系统
const fs = require('fs');
const path = require("path");
async function getFile(filename){
    var obj ={};
    //获取文件信息
    const stat = await fs.promises.stat(filename);
    //文件名
    obj.name = path.basename(filename);
    //文件后缀名
    obj.ext = path.extname(filename);
    //是否是文件
    obj.isFile = stat.isFile();
    //文件大小
    obj.size = stat.size;
    //文件创建时间
    obj.createTime = stat.birthtime.toLocaleString()
    //文件最后修改时间
    obj.updateTime = stat.mtime.toLocaleString();
    //获取文件内容,如果是目录,则返回null
    obj.getContent = async function(isBuffer =false){
        if(this.isFile){
            if(isBuffer){
                return await fs.promises.readFile(filename);
            }else{
                return await fs.promises.readFile(filename,"utf-8")
            }
        }
        return null;
    }
    //获取目录的子文件,如果是文件则返回为空数组
    obj.getChidren = async function(){
        if(this.isFile){
            return []
        }
        //获取目录下文件夹,返回一个数组
        let children = await fs.promises.readdir(filename);
        children = children.map(ele=>{
            const result = path.resolve(filename,ele)
            return getFile(result)
        })
        return children;
    }
    return obj;
}
//需要获取的文件的地址
const dirname = path.resolve(__dirname,"./");
// var a = getFile(dirname)
// console.log(a);
(async function(){
    //文件详细信息
    const res = await getFile(dirname);
    //文件内容
    const con = await res.getContent()
    //目录的子文件信息
    const child = await res.getChidren()

    console.log(child);
    console.log(con);
    console.log(res);
})()

三、实现效果

这个记录下来为了以后的使用的方便,也希望大佬们多多交流,多多留言,指出我的不足的之处啦!

有需要的小伙伴自取啦!!


 

猜你喜欢

转载自blog.csdn.net/A20201130/article/details/123860224