FS操作文件

fs : 操作文件的模块,内置模块

语法

const fs = require("fs");

添加文件:

writeFile() : 写入(创建)文件
参数1 : 文件名称,包括文件格式
参数2 : 文件中,需要写入的内容

fs.writeFile("1.txt","我输需要写入的内容",function(err){
    if(err){
        return console.log(err);
    }else{
        console.log("写入成功");
    }
});

fs.writeFile("2.txt","我输需要写入的内容",function(err){
    if(err){
        return console.log(err);
    }else{
        console.log("写入成功");
    }
});
// 当写入的内容存在是,会覆盖掉原有的文件
参数3配置对象{}: 
         flag属性 : 
                  a : 追加写入
                  w : 写入(默认值)
fs.writeFile("1.txt","111我追加进来的内容111",{flag:"r"},function(err){
    if(err){
        return console.log(err);
    }else{
        console.log("写入成功");
    }
});

文件读取:

回调函数中 参数1:错误信息,参数2:读取到的信息
fs.readFile("1.txt","utf-8",function(err,data){
    if(err){
        return console.log(err);
    }
    console.log(data)
});

fs.readFile("1.txt",function(err,data){
    if(err){
        return console.log(err);
    }
    console.log(data.toString());
});

备注
所有的文件,都有同步与异步之分
文件操作中,默认都是异步的,需要同 步时,在方法后加 Sync
例如:

readFileSync();  同步操作
readFile();    异步操作
let data = fs.readFileSync("1.txt").toString();
console.log(data);

改——重命名:

参数1:原名字
参数2:新名字
fs.rename("1.txt","11.txt",err=>{
    if(err){
        return console.log(err);
    }
    console.log("修改成功");
});

删除

fs.unlink("2.txt",err=>{
    if(err){
        return console.log(err);
    }
    console.log("删除成功");
});

复制
本质: 先读取,在写入


fs.copyFile("11.txt","aa.txt",(err)=>{
    if(err){
        return console.log(err);
    }
    console.log("复制成功")
});

封装复制文件的方法

function myCopyfile(src,dest){
    fs.writeFileSync(dest,fs.readFileSync(src));
}
myCopyfile("index.html","text.html");

目录操作

操作目录时,不需要后缀格式

创建目录:

fs.mkdir("ding",err=>{
    if(err){
        return console.log(err)
    }
    console.log("创建成功");
});

修改目录名称:

fs.rename("ding","GD",err=>{
    if(err){
        return console.log(err)
    }
    console.log("修改成功")
});

读取目录:

fs.readdir("GD",(err,data)=>{
    if(err){
        console.log(err)
    }
    console.log(data)
})

删除目录(删除的是空目录)

fs.rmdir("GD",err=>{
    if(err){
        console.log(err)
    }
    console.log("删除成功")
});

判断文件或者目录是否存在

fs.exists("index1.html",exists=>{
    console.log(exists); //是否找到指定内容
});

获取文件获取目录的详细信息

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

    let res = data.isFile();  //是否是文件
    console.log(res);

    console.log(data.isDirectory()); //是否是目录
});

删除非空目录
思路:

  1. 先把目录里的文件删除
  2. 该目录成为一个空目录时,直接删除该目录
function removerDir(path){
    //获取到目录
    let data = fs.readdirSync(path);    //[ 'ck','1.txt', '2.html', '33.txt' ]
    // data = [""]~数组
    // console.log(data)

    for(let i = 0; i < data.length; i++){
        // 循环判断目录中的每一个内容

        // 处理子目录的路径
        let url = path + "/" + data[i];
        /*
            循环1 : url = "22/ck"
            循环2 : url = "22/1.txt"
            循环3 : url = "22/2.html"
            循环4 : url = "22/33.txt"
        */

        // 获取到详细信息
        let stat = fs.statSync(url);

        if(stat.isDirectory()){    // 如果是目录,继续查找
            removerDir(url);
        }else{  // 如果是文件,直接删除
            fs.unlinkSync(url); // 不能写path path为22
        }
    }

    // 当循环结束后,目录成为空目录
    fs.rmdirSync(path);

}
removerDir("22");

注意事项 :
在使用Node.js删除文件时,不会经过回收站
在删除前,切记备份
以免删除错误,发生不可挽救的损失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值