首页 > 代码库 > nodejs的目录操作

nodejs的目录操作

  • 创建目录(不能创建多级目录)
    fs.mkdir(path[,mode],callback)   //mode参数表示文件夹的权限,这个只是linux和mac系统下才需要设置。在window下就是777,可读可写可删除,一般设置了也没用
    fs.mkdirSync(path,[,mode])  //undefined  
  • 删除目录(删除空文件夹)
    fs.rmdir(path,callback)
    fs.rmdirSync(path)
  • 读取目录
    fs.readdir(path,[,options],callback)
    fs.readdir(path,[,options])
  • 删除多级目录
    const fs = require("fs");
    
    const removeDir = (dir)=>{
        let files = fs.readdirSync(dir);//一个数组
        files.forEach((item) => {
            let file = dir +"/" + item;
            if(fs.statSync(file).isFile()){
                fs.unlinkSync(file);
            }else{
                removeDir(file);
            }
        });
        fs.rmdirSync(dir);
    };
    
    removeDir("./project");
  • 自动创建目录结构
  • const fs = require("fs");
    
    const config = {
        name: "blog",
        data:[
            {
                name: "css",
                type: "dir"
            },
            {
                name: "js",
                type: "dir"
            },
            {
                name: "images",
                type: "dir"
            },
            {
                name: "index.html",
                type: "file",
                content : ‘<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="UTF-8">\n<title>Title</title>\n</head>\n <body>\n</body>\n</html>‘
            }
        ]
    };
    
    //根据配置,自动生成项目目录
    if(config.name){
      //第一步创建根目录
        fs.mkdir(config.name,(err) => {
            config.data.forEach((item) => {
                //拼接路径
                let file = config.name + "/" +item.name;
    
                switch(item.type){
                    case "dir":
                        fs.mkdirSync(file);
                        break;
                    case "file":
                        fs.writeFileSync(file,item.content,"utf-8");
                        break;
                    default:
                        break;
                }
            });
        });
    }

     

  • 自动合并代码
    const fs = require(‘fs‘);
    
    const dir = "./blog/js/src";
    const subject = ‘./blog/js/dest/app.js‘;
    
    //监听dir这个目录
    fs.watch(dir,(evt, filename) =>{
        let data = "" ; //保存读取的内容
        //遍历dir目录
        fs.readdir(dir, (err,files) => {
    
            if (err) throw err;
            //得到的files是一个数组,遍历这个数组
            files.forEach( (item) => {
                //需要拼接,得到文件的完整的路径
                let file = dir + "/" + item;
                //读取文件
                data += fs.readFileSync(file,‘utf8‘);
            });
            //遍历完毕,就可以将data写入目标文件
            fs.writeFileSync(subject,data,‘utf8‘);
        });
    });

     

nodejs的目录操作