1.機能要件
カプセル化機能: ディレクトリ内のすべてのサブディレクトリとファイルを読み取る
オブジェクトとして返す:
プロパティ:
name: ファイル名、
ext: サフィックス名、ディレクトリは空文字列
isFile: ファイルかどうか
size: ファイル サイズ、ディレクトリは 0
createTime: 作成日時オブジェクト
updateTime: 変更日時オブジェクト
メソッド:
getChidren() : 現在のディレクトリのすべてのサブファイル オブジェクトを取得します。ファイルの場合は空の配列を返します
getContent(isBuffer = false): ファイルの内容を読み取り、フォルダーの場合は null を返します
2. 機能実現
//导入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);
})()
3.効果を実感する
これは将来の使用の便宜のために記録されたものであり、大物がより多くのコミュニケーションを取り、多くのメッセージを残し、私の欠点を指摘できることを願っています!
困っている友達が拾ってくれます!!