美文网首页
04.node内置模块之文件模块fs

04.node内置模块之文件模块fs

作者: 讲武德的年轻人 | 来源:发表于2019-09-25 11:11 被阅读0次

    一. 读取文件夹

    同步读取文件

    const fs = require('fs');
    // 同步读取文件夹
    
    let dirs = fs.readdirSync('./');
    console.log(dirs)
    
    执行结果和dir一样 注意:输出结果是一个数组

    异步读取文件夹

    const fs = require('fs');
    let dirs = fs.readdir('./',(err,data)=>{
        console.log(err);
        console.log(data);
    });
    console.log(dirs)
    
    异步读取文件夹
    • 异步读取,回调函数后执行
    • 在node中,错误的回调优先,回调函数第一个参数为错误对象,默认为null
      所以,在回调函数中,一般先判断错误:
    const fs = require('fs');
    let dirs = fs.readdir('./dsfsdfs',(err,data)=>{
        if(err){//表示有错误
            console.log(err)
        }else{
            console.log(data);
        }
    });
    console.log(dirs)
    
    输出错误,因为./dsfsdfs目录不存在

    若是同步读取文件夹,出现错误时,程序就崩了,下面的代码也不会执行:

    const fs = require('fs');
    
    // 同步读取文件
    let dirs = fs.readdirSync('./dadfdfsgd');
    console.log(123)
    console.log(dirs)
    

    ./dadfdfsgd是一个并不存在的目录


    出现错误,程序直接崩,并不打印123

    解决方法:

    const fs = require('fs');
    
    // 同步读取文件
    try{
        // 放可能出错的代码
        let dirs = fs.readdirSync('./dadfdfsgd');
    }
    catch(err){
        console.log("出错啦");
        console.log(err)
    }
    console.log(123)
    
    用try catch捕获错误,然后处理

    二. 创建文件夹

    // 创建目录
    const fs = require('fs');
    fs.mkdir('./testDir',(err)=>{
        console.log(err);
    })
    

    创建文件夹成功。
    若文件夹本身存在,则会报错!
    文件夹重命名
    fs.rename(oldPath, newPath, callback)

    const fs = require('fs');
    fs.rename('./testDir','testDir01',(err)=>{
        if(err){
            console.log("更改失败");
        }else{
            console.log("更改成功");
        }
    })
    

    删除空文件夹
    fs.rmdir(path, callback)

    const fs = require('fs');
    fs.rmdir('./testDir01',(err)=>{
        if(err){
            console.log("删除失败");
        }else{
            console.log("删除成功");
        }
    })
    

    三. 文件操作

    • 读取文件 fs.readFile(path[, options], callback)
    • 删除文件 fs.unlink(path, callback)
    • 创建文件 fs.writeFile(file, data[, options], callback)
      异步地写入数据到文件,如果文件已经存在,则替代文件。 data 可以是一个字符串或一个 buffer。如果 data 是一个 buffer,则忽略 encoding 选项。它默认为 'utf8'。
    • 追加文件 fs.appendFile(file, data[, options], callback)
      异步地追加数据到一个文件,如果文件不存在则创建文件。 data 可以是一个字符串或 Buffer

    注意:为防止覆盖文件,一般用fs.appendFile

    var fs = require('fs');
    
    // 创建文件
    // fs.writeFile('weather.txt','今天天气真好',(err)=>{
    //     console.log(err);
    // })
    
    // 追加文件
    // fs.appendFile('weather.txt','今天天气真好',(err)=>{
    //     console.log(err);
    // })
    
    // 读取文件
    // fs.readFile('./weather.txt','utf-8',(err,msg)=>{
    //     console.log(err);
    //     console.log(msg);
    // })
    
    // 删除文件
    fs.unlink('./weather.txt',(err)=>{
        console.log(err);
    })
    

    四. 判断是否是文件

    fs.Stats 类
    fs.stat()fs.lstat()fs.fstat() 及其同步版本返回的对象都是该类型。

    • stats.isFile()
    • stats.isDirectory()
    • stats.isBlockDevice()
    • stats.isCharacterDevice()
    • stats.isSymbolicLink() (仅对 fs.lstat() 有效)
    • stats.isFIFO()
    • stats.isSocket()
    var fs = require('fs');
    
    fs.stat('./fileOpea.js',(err,stats)=>{
        if(stats.isFile()){
            console.log("This is a file");
        }else{
            console.log("This is a folder")
        }
    })
    

    相关文章

      网友评论

          本文标题:04.node内置模块之文件模块fs

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