• NodeJS3-4基础API----fs(文件系统)


    异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 null 或 undefined

    1.读取文件操作(readFile)

    举个例子(读取文件操作)  同步会先执行完 [尽量用异步]

    const fs = require('fs')
    fs.readFile('./30_readfile.js','utf8',(err,data)=>{
        if(err){
            throw err
        }else{
            //输出结果是一个Buffer的(因为没有toString或者在参数那里定义编码格式)
            console.log(data);
            // console.log(data.toString());
        }
    })
    
    // 同步操作
    const data =  fs.readFileSync('./29_event_remove.js','utf8');
    console.log(data);

    2.写文件(writeFile)

    //输出done
    const fs = require('fs')
    
    fs.writeFile('./text','this is text','utf8',err=>{
        if(err) throw err;
        console.log('done')
    })
    
    //输出done 使用了Buffer
    const fs = require('fs')
    const content = Buffer.from('this is text')
    fs.writeFile('./text',content,err=>{
        if(err) throw err;
        console.log('done')
    })

    3.查看文件信息(stats)

    const fs =require('fs')
    fs.stat('./32_stat.js',(err,stats)=>{
        if(err){
            throw err
        }else{
            console.log(stats.isFile());
            console.log(stats.isDirectory());
            console.log(stats);
        }
    })

    运行结果:

    4.重命名(rename)

    const fs =require('fs')
    fs.rename('./text','text.txt',err=>{
        if(err) throw err
        console.log('done!');
    })

    5.unlink

    const fs = require('fs')
    fs.unlink('./text.txt',err=>{});

    6.读文件夹(readdir)

    const fs = require('fs')
    fs.readdir('./',(err,files)=>{
        if(err) throw err
        console.log(files);
    })

    运行结果

    7.创建一个文件夹(mkdir)

    const fs =require('fs')
    fs.mkdir('test',err=>{ })

    8.移除一个文件夹(rmdir)

    const fs = require('fs')
    fs.rmdir('./test',err=>{});

    9.监视(watch)[很有用,做本地构建相当方便]

    const fs = require('fs')
    fs.watch('./',{
        recursive:true
    },(eventType,filename)=>{
        console.log(eventType,filename);
    });

    10.readstream

    //stream有方向的流 (数据) stream有两个条件按,一个是方向一个是数据
    const fs = require('fs')
    const rs = fs.createReadStream('./39_readstream.js');
    //读一点给一点,类似网速慢加载从上到下
    rs.pipe(process.stdout);

    11.writestream

    const fs =require('fs')
    const ws = fs.createWriteStream('./text.txt')
    const tid = setInterval(()=>{
        const num = parseInt(Math.random()*10)
        console.log(num);
        
        if(num<8){
            ws.write(num + '')
        }else{
            clearInterval(tid)
            ws.end()
        }
    },200)
    ws.on('finish',()=>{
        console.log('done!'); 
    })

    运行结果

    12.回调地狱解决

    方法一

    const fs =require('fs')
    const promisify = require('util').promisify;
    
    const read = promisify(fs.readFile)
    read('./41_promisify.js').then(data=>{
        console.log(data.toString());
        
    }).catch(ex=>{
        console.log(ex);
        
    })

    运行结果

    方法二

    const fs =require('fs')
    const promisify = require('util').promisify;
    
    const read = promisify(fs.readFile)
    // read('./41_promisify.js').then(data=>{
    //     console.log(data.toString());
        
    // }).catch(ex=>{
    //     console.log(ex);
        
    // })
    
    async function test(){
        try{
            const content= await read('./41_promisify.js')
            console.log(content.toString());
        }catch(ex){
            console.log(ex);
        }   
    }
    test();

    运行结果跟上面一样

  • 相关阅读:
    java代码---------实现布尔型的功能,是否执行下一步的关键
    java代码--------实现随机输出100个随机数,10行,0--到9的数字
    java代码--------打印三角形
    java代码------------条件运算符 ?:
    java代码-----------逻辑运算符、 &&逻辑与 ||或
    java代码------计算器
    C/C++ ===复习==函数返回值问题(集合体==网络)
    Centos6.5添加163软件yum源
    python2.7.5 +eric4.4.2+PyQt4-4.10.3
    python yield初探 (转)
  • 原文地址:https://www.cnblogs.com/chorkiu/p/11419973.html
Copyright © 2020-2023  润新知