node.js中的fs 模块

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);
}
    原文作者:放飞吧自我
    原文地址: https://www.jianshu.com/p/9be5f1e5a9f8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞