node.js之fs模块(目录、文件增删改查操作)

fs模块

  • fs是文件操作模块,所有文件操作都是有同步和异步之分,特点是同步会加上 “Sync” 如:异步读取文件 “readFile”,同步读取文件 “readFileSync”。

文件操作

读取

  • 异步读取
    let fs = require("fs");
    fs.readFile("1.txt","utf-8",(err,data)=>{
        if(err){
            return console.log(err);
        }
        //console.log(data);  //指定编码格式 utf-8
        console.log(data.toString());  //不指定需将二进制编码转为字符串
    })
    
  • 同步读取
    let fs = require("fs");
    let res = fs.readFileSync("1.txt");
    console.log(res.toString());
    

写入

  • 异步写入
let fs = require("fs");
//flag配置  "a":追加写入,"w":写入,"r":读取
fs.writeFile("2.txt","我是要写入的内容",{flag:"w"},err=>{
    if(err){
        return console.log(err);
    }
    console.log("写入成功");   
})
  • 同步写入
let fs = require("fs");
fs.writeFileSync("1.txt","同步方式写入数据",{flag:"w"});

修改

  • 修改文件名,目录也可以通过rename来操作
  • 异步修改
  fs.rename("1.txt","5.txt",function (err) {
        if(err){
            console.log(err);
        }else{
            console.log("修改成功");
        }
    });
  • 同步修改
fs.renameSync("1.txt","3.txt");

复制

  • 异步复制
fs.copyFile("index.html","myindex.html",err=>{
    if(err){
        return console.log(err);
    }
    console.log("复制成功!");
})
  • 同步复制
fs.copyFileSync("index.html","myindex2.html");
  • 手写复制,先读取再写入
function mycopy(src,dest){
    fs.writeFileSync(dest,fs.readFileSync(src));
}
mycopy("index.html","test.html");

删除

  • 异步删除
fs.unlink("2.txt",(err)=>{
    if(err){
        return console.log(err);
    }
    console.log("删除成功");
}) 
  • 同步删除
fs.unlinkSync("myindex2.html");

判断文件是否存在

fs.exists("index.html",exists=>{
    console.log(exists);
})

获取文件详细信息

fs.stat("index.html",(err,stat)=>{
    if(err){
        return console.log(err);
    }
    console.log(stat);
})

判断是否为文件

fs.stat("index.html",(err,stat)=>{
    if(err){
        return console.log(err);
    }
    let res = stat.isFile();
    console.log(res);
})

目录操作

创建目录

  • 异步创建
fs.mkdir("11",err=>{
    if(err){
        return console(err);
    }
    console.log("创建成功");
})
  • 同步创建
fs.mkdirSync("22");

修改目录名称

  • 异步修改
fs.rename("11","22",err=>{
    if(err){
        return console.log(err);
    }
    console.log("修改成功");
})
  • 同步修改
fs.renameSync("33","44");

读取目录

  • 异步读取 读取结果带后缀的是文件,不带后缀是目录
fs.readdir("22",(err,data)=>{
    if(err){
        return console.log(err);
    }
    console.log(data);
})
  • 同步读取
fs.readdirSync("22");

判断目录是否存在

fs.exists("22",exists=>{
    console.log(exists);
})

判断是否为目录

fs.stat("22",(err,stat)=>{
    if(err){
        return console.log(err);
    }
   let res = stat.isDirectory();
   console.log(res);
})

删除目录

空目录
  • 异步删除
fs.rmdir("22",err=>{
    if(err){
        return console.log(err);
    }
    console.log("删除成功");
})
  • 同步删除
fs.readdirSync("22");
非空目录
  • 先删除目录里的文件夹,再删除空目录
function removeDier(path){
        let data = fs.readdirSync(path);
        for(let i = 0;i<data.length;i++){
                // 是文件或者是目录  是文件直接删除  目录直接删除
                let url = path + "/" + data[i];
                let stat = fs.statSync(url);
                if(stat.isDirectory()){
                        // 继续查找
                        removeDier(url);
                }else{
                        // 文件删除
                        fs.unlinkSync(url);
                }
        }  
        fs.rmdirSync(path);      
}
removeDier("22");

读取目录信息

fs.stat("22",(err,stat)=>{
    if(err){
        return console.log(err);
    }
    console.log(stat);
})
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值