zoukankan      html  css  js  c++  java
  • 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();

    运行结果跟上面一样

  • 相关阅读:
    简单的Makefile
    共享库
    链接静态库
    /proc/uptime参数的意义
    磁盘挂载失败
    linux环境变量设置
    使用systemd-analyze 工具来分析各个服务进程的启动性能
    面试-2020C/C++后台开发深信服科技股份有限公司一面凉经(一问三不知,我是真的菜。。。)
    笔记-C/C++工程师面试笔记收集整理
    SpringCloud-分布式与集群的使用四(断路器Hystrix)
  • 原文地址:https://www.cnblogs.com/chorkiu/p/11419973.html
Copyright © 2011-2022 走看看