node.js中的fs 模块

作者: 放飞吧自我 | 来源:发表于2018-01-30 20:28 被阅读402次

    Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:

    var fs = require("fs")
    

    对文件的操作

    文件读取

    Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
    异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
    建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

    同步

    //同步 所有同步的函数都是函数后面加Sync;
     var res = fs.writeFileSync("1.txt","我是写入内容");
    

    异步

    //文件的读取
    fs.readFile("1.txt",function (err,data) {
         if (err){
            console.log(err)
         }else {
             console.log(data.toString())
         }
     })
    

    文件写入

    //创建: writeFile(文件名,写入内容,配置参数,回调函数) 异步
    //配置参数:
    /*
    * a :追加
    * w :写入
    * r :读取
    * */
    fs.writeFile("2.txt","我是2.txt",{flag:"a"},function (err) {
        if(err){
            console.log(err);
        }else {
            console.log("写入成功");
        }
    })
    
    // 追加写入
    fs.appendFile("2.txt","我是追加的字符",function (err) {
        if(err){
          return  console.log(err);
        }else {
            console.log("追加成功");
        }
    })
    

    文件名修改

    //文件修改(文件名的修改) 
     fs.rename("5.txt","1.txt",function (err) {
         if(err){
             console.log(err)
         }else {
             console.log("修改成功");
         }
     })
    

    //文件删除
     fs.unlink("2.txt",function (err) {
         if(err){
             return console.log(err)
         }else {
             console.log("删除成功")
         }
     })
    

    由于fs模块中没有对文件的复制,我们可以自己通过以上操作封装一个

    function mycopy(file1,file2) {
        //读取文件
        var res = fs.readFile(file1,function (err,data) {
            if (err){
                console.log(err)
            }else {
                var res = data.toString()
                fs.writeFile(file2,res,function (err) {
                    if(err){
                        console.log(err)
                    }else {
                        console.log("写入成功");
                    }
                })
            }
        })
    }
    
    //
    function mycopy(src,dest) {
        fs.writeFileSync(dest,fs.readFileSync(src));
    }
    

    对文件夹的操作

    文件夹的操作/目录操作

    // 目录创建:
    // 1、1:执行-x 2、2:写-w 3、4:读-r
    fs.mkdir("10",0666,function (err) {
        if(err){
            console.log(err)
        }else {
            console.log("创建成功");
        }
    })
    

    修改文件夹权限

    fs.chmod("11",0777,function (err) {
        if(err){
            console.log(err)
        }else {
            console.log("修改权限成功")
        }
    })
    

    判断文件或者文件夹是否存在

    fs.exists("10",function (exists) {
        if(exists){
            console.log("文件夹已存在");
        }else {
            fs.mkdir("10",0777,function (err) {
                if(err){
                    return console.log(err);
                }else{
                    console.log("创建成功");
                }
            })
        }
    })
    

    删除文件夹 : 只能删除空文件夹

    fs.rmdir("10",function (err) {
        if(err){
            return console.log(err)
        }else {
            console.log("删除成功");
        }
    })
    

    读取文件夹

    fs.readdir("10",function (err,data) {
        if(err){
            console.log(err);
        }else {
            console.log(data);
        }
    })
    

    显示文件的详细信息:

    //针对详细信息来判断是否是文件
    fs.stat("10",function (err,data) {
        if(err){
           return console.log(err)
        }else {
            // console.log(data);
            //判断是否是文件
            var res = data.isFile();
            //判断是否是文件夹
            // data.isDirectory();
            if(res){
                console.log("是文件")
            }else {
                console.log("是文件夹")
            }
        }
    })
    

    由于node.js中没有删除包含文件的文件夹的函数,因此我们仿写一个函数来删除包含文件的文件的函数

    // 删除文件夹的函数 同步
    var removeDir = function(src) {
       // 获取到文件夹里的内容
       var arr = fs.readdirSync(src);
       //判断是否是文件,如果是文件就删除;如果是文件夹再执行相同过程
        for(var i=0;i<arr.length;i++){
           //子文件的详细信息
           // 组装文件或者文件夹的路径
            var url = src+"/"+arr[i];
            var data = fs.statSync(url);
            //判断每个元素是文件或者是文件夹
            if(data.isFile()){
                //是文件
                fs.unlinkSync(url);
            }else {
                //是文件夹
                removeDir(url)
            }
        }
        //删除空文件夹
        fs.rmdirSync(src);
    }
    

    相关文章

      网友评论

        本文标题:node.js中的fs 模块

        本文链接:https://www.haomeiwen.com/subject/tjdpaxtx.html