zoukankan      html  css  js  c++  java
  • node 基础API(fs)

    读文件:

    const fs=require('fs');
    
    fs.readFile('./32_readfile.js','utf8',(err,data)=>{
        if(err) throw err;
        console.log(data);
    });
    
    const data=fs.readFileSync('./32_readfile.js','utf8');  // 同步
    console.log(data);
    
    // 输出文件内容

    写文件:

    const fs=require('fs');
    
    const content=Buffer.from('this is a test');
    
    fs.writeFile('./text',content,err=>{
        if(err) throw err
        console.log('done!');
    })
    
    fs.writeFile('./text2','this is a test2',{encoding:'utf8'},err=>{
        if(err) throw err
        console.log('done!');
    })

    获取文件信息 stat:

    const fs=require('fs');
    
    fs.stat('./34_stat.js',(err,stats)=>{
        if(err) {
            console.log('文件不存在')
        };
    
        console.log(stats.isFile());
        console.log(stats.isDirectory());
    
        console.log(stats);
    });
    
    true
    false
    Stats {
      dev: 637858,
      mode: 33206,
      nlink: 1,
      uid: 0,
      gid: 0,
      rdev: 0,
      blksize: undefined,
      ino: 23925373020527024,
      size: 200,
      blocks: undefined,
      atimeMs: 1561992748290,
      mtimeMs: 1561992948768.0908,
      ctimeMs: 1561992948768.0908,
      birthtimeMs: 1561992748290.0913,
      atime: 2019-07-01T14:52:28.290Z,
      mtime: 2019-07-01T14:55:48.768Z,
      ctime: 2019-07-01T14:55:48.768Z,
      birthtime: 2019-07-01T14:52:28.290Z }

    重命名:

    const fs=require('fs');
    
    fs.rename('./text','test.txt',err=>{
        if(err) console.log('文件不存在');
    })

    删除:

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

    读文件夹:

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

    创建文件夹:

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

    删除文件夹:

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

    监视:

    const fs=require('fs');
    
    fs.watch('./',{
        recursive:true    // 是否递归(子文件夹)
    },(eventType,filename)=>{        // eventType:变化类型
        console.log(eventType,filename);
    })

    读流:比如播放电影,512的内存也可以播放2G的电影,就是通过流一点点读数据

    const fs=require('fs');
    
    const rs=fs.createReadStream('./41_readstream.js');
    
    rs.pipe(process.stdout);   // 控制台

    写:

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

     解决回调地狱:promisify

    const fs=require('fs');
    
    const promisify=require('util').promisify;
    
    const read=promisify(fs.readFile);
    
    // 第一种
    read('./43_promisify.js').then(data=>{
        console.log(data.toString());
    }).catch(ex=>{
        console.log(ex);
    });
    
    // 第二种 async
  • 相关阅读:
    VUE 脚手架模板搭建
    defineProperty
    理解JS中的call、apply、bind方法
    Two-phase Termination模式
    打印样式设计
    浏览器内部工作原理
    Immutable Object模式
    怎么跳出MySQL的10个大坑
    控制台console
    整理的Java资源
  • 原文地址:https://www.cnblogs.com/jingouli/p/11198146.html
Copyright © 2011-2022 走看看