一、功能需求
封装函数:读取一个目录中所有子目录和文件
返回为一个对象:
属性:
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);
})()
三、实现效果
这个记录下来为了以后的使用的方便,也希望大佬们多多交流,多多留言,指出我的不足的之处啦!
有需要的小伙伴自取啦!!
版权声明:本文为A20201130原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。