node学习基础篇二

一、读写文件(同步,异步)

var file=require('fs');

//同步方法

var text1=fs.readFileSync('text1','utf8');  //读取文件名是text1下的内容

fs.writeFileSync('text2',text2,'utf8');   //把text1的内容写入新建的文件名是text2中

//异步方法

var text1=fs.readFile('text1','utf8',function(data){
        //
})

二、创建和删除目录

var fs=require('fs');

fs.mkdir('starf',function(){
        fs.readFile('a.text','utf8',function(err,data){
            fs.writeFile('./starf/c.text',data,function(){
                console.log("success")
            })
        })
})

三、async和await

async function asyncFn(){
    await setTimeOut(x=>console.log(1))
    await setTimeOut(x=>console.log(2))
    await setTimeOut(x=>console.log(3))

}

asyncFn()    //1,2,3
  • async用来申明里面包裹的内容可以进行同步的方式执行,await则是进行执行顺序控制,每次执行一个await,程序都会暂停等待await返回值,然后再执行之后的await。
  • await后面调用的函数需要返回一个promise,另外这个函数是一个普通的函数即可,而不是generator。
  • await只能用在async函数之中,用在普通函数中会报错。
  • await命令后面的 Promise 对象,运行结果可能是 rejected,所以最好把 await 命令放在 try...catch 代码块中。

四、 流和管道

NodeJs中关于流的操作被封装到了Stream模块中,这个模块也被多个核心模块所引用。

const stream = require('stream');

在 NodeJS 中对文件的处理多数使用流来完成

  • 普通文件
  • 设备文件(stdin、stdout)
  • 网络文件(http、net)

注:在NodeJs中所有的Stream(流)都是EventEmitter的实例

Example:

1.将1.txt的文件内容读取为流数据

const fs = require('fs');

// 创建一个可读流(生产者)
let rs = fs.createReadStream('./1.txt'); 

通过fs模块提供的createReadStream()可以轻松创建一个可读的文件流。但我们并有直接使用Stream模块,因为fs模块内部已经引用了Stream模块并做了封装。所以说 流(stream)在 Node.js 中是处理流数据的抽象接口,提供了基础Api来构建实现流接口的对象。 

2.创建可写流(消费者)处理可读流

将1.txt的可读流 写入到2.txt文件中 这时我们需要一个可写流

const fs = require('fs');
// 创建一个可写流
let ws = fs.createWriteStream('./2.txt');
// 通过pipe让可读流流入到可写流 写入文件
rs.pipe(ws); 

猜你喜欢

转载自blog.csdn.net/weixin_39460408/article/details/81411744