>  기사  >  웹 프론트엔드  >  node.js는 스트림을 사용하여 읽기와 쓰기의 동기화, 동시에 읽기와 쓰기 기능을 달성합니다.

node.js는 스트림을 사용하여 읽기와 쓰기의 동기화, 동시에 읽기와 쓰기 기능을 달성합니다.

不言
不言원래의
2018-06-30 10:57:331666검색

다음 기사에서는 스트림을 사용하여 읽기 및 쓰기 동기화를 달성하는 node.js에 대한 기사와 동시에 읽고 쓰는 방법에 대한 기사를 제공합니다. 내용이 꽤 괜찮아서 지금 공유해서 참고용으로 올려드리겠습니다.

은 다음과 같습니다.

//10个数 10个字节,每次读4b,写1b
let fs=require("fs");
function pipe(source,target) {
  //先创建可读流,再创建可写流
  //先读一次,rs.on(data)
  //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取
  //ws.on('drain'),抽干后,回复读取
  //监听读取文件完毕后,关闭读取rs.on('end')

  let rs=fs.createReadStream(source,{highWaterMark:4});
  let ws=fs.createWriteStream(target,{highWaterMark:1});

  rs.on('data',function (chunk) { //chunk是buffer类型

    if(ws.write(chunk)===false){
      //写不下,停止读取
      rs.pause()
    }

  });
  ws.on('drain',function () {
    //每次写的内存干了就恢复读取
    console.log("111");
    rs.resume() //恢复读取
  });
  rs.on('end',function (chunk) {
    ws.end();
  })

}
pipe('./1.txt','./3.txt')

위의 작성 방법은 모두가 읽은 후에는 더 복잡합니다.

node.js는 내장된 메소드 파이프

를 제공합니다.
//10个数 10个字节,每次读4b,写1b
let fs=require("fs");
function pipe(source,target) {

  let rs=fs.createReadStream(source,{highWaterMark:4});
  let ws=fs.createWriteStream(target,{highWaterMark:1});
  //可读流到可写流,异步操作,可以保证内存不会被淹没,读一点,写一点
  // 如果想看文件类容,使用readFile

  rs.pipe(ws);
}
pipe('./1.txt','./4.txt')

직접 읽기 스트림을 쓰기 스트림으로 운영해야 할까요, 아니면 비동기적으로 운영해야 할까요? 위 내용이 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트에 주목하세요!

관련 권장 사항:

nodejs 소켓 서버와 클라이언트 간의 단순 통신 기능에 대해


angular2와 nodejs는 이미지 업로드 기능을 구현합니다


위 내용은 node.js는 스트림을 사용하여 읽기와 쓰기의 동기화, 동시에 읽기와 쓰기 기능을 달성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.