node.js(10)

3602 단어
Node.js Stream (흐름) Stream은 추상적인 인터페이스입니다. 노드에는 많은 대상이 이 인터페이스를 실현했습니다.예를 들어 http 서버에 요청한 Request 대상은 Stream이고 stdout (표준 출력) 도 있습니다.Node.js, Stream에는 Readable - 읽을 수 있는 네 가지 흐름 유형이 있습니다.Writable - 쓰기 가능 작업입니다.Duplex - 읽기 및 쓰기 가능합니다.Transform - 작업이 데이터를 쓰고 결과를 읽습니다.모든 Stream 객체는 Event Emitter의 인스턴스입니다.자주 사용하는 이벤트는 다음과 같습니다: 데이터 - 읽을 수 있는 데이터가 있을 때 터치합니다.end - 읽을 수 있는 데이터가 더 없을 때 터치합니다.error - 수신 및 쓰기 중 오류가 발생할 때 트리거합니다.finish - 모든 데이터가 최종 시스템에 기록되었을 때 터치합니다.이 강좌는 여러분에게 자주 사용하는 흐름 조작을 소개할 것입니다.흐름에서 데이터를 읽고 input을 만듭니다.txt 파일의 내용은 다음과 같습니다.
 

만들다js 파일, 코드는 다음과 같습니다.
var fs = require("fs");
var data = '';

//  
var readerStream = fs.createReadStream('input.txt');

//   utf8。
readerStream.setEncoding('UTF8');

//   --> data, end, and error
readerStream.on('data', function(chunk) {
   data += chunk;
});

readerStream.on('end',function(){
   console.log(data);
});

readerStream.on('error', function(err){
   console.log(err.stack);
});

console.log(" ");

이러한 코드 실행 결과는 다음과 같습니다.
 
 

쓰기 흐름 생성main.js 파일, 코드는 다음과 같습니다.
var fs = require("fs");
var data = ' ';

//  ,  output.txt  
var writerStream = fs.createWriteStream('output.txt');

//   utf8  
writerStream.write(data,'UTF8');

//  
writerStream.end();

//   --> data, end, and error
writerStream.on('finish', function() {
    console.log(" 。");
});

writerStream.on('error', function(err){
   console.log(err.stack);
});

console.log(" ");

위 프로그램은 데이터 변수의 데이터를 output에 기록합니다.txt 파일에서코드 실행 결과는 다음과 같습니다.
$ node main.js 
 
 。

output. 보기txt 파일의 내용:
$ cat output.txt 
 

파이프 흐름 파이프는 출력이 입력 흐름으로 흐르는 메커니즘을 제공한다.일반적으로 우리는 한 흐름에서 데이터를 얻고 다른 흐름으로 전달하는 데 사용된다.위의 그림에서 보듯이 우리는 서류를 물을 담는 통에 비유한다. 물은 바로 서류의 내용이다. 우리는 하나의 파이프(pipe)로 두 통을 연결하여 물을 한 통에서 다른 통으로 흐르게 함으로써 큰 문서의 복제 과정을 천천히 실현했다.다음 예는 한 파일의 내용을 읽고 다른 파일에 쓰는 것입니다.input. 설정txt 파일의 내용은 다음과 같습니다.
 
 

만들다js 파일, 코드는 다음과 같습니다.
var fs = require("fs");

//  
var readerStream = fs.createReadStream('input.txt');

//  
var writerStream = fs.createWriteStream('output.txt');

//  
//   input.txt  ,  output.txt  
readerStream.pipe(writerStream);

console.log(" ");

코드 실행 결과는 다음과 같습니다.
$ node main.js 
 

output. 보기txt 파일의 내용:
$ cat output.txt 
 
 

체인식 흐름 체인식은 출력을 연결하여 다른 흐름으로 흐르게 하고 여러 개의 흐름 조작 체인을 만드는 메커니즘이다.체인식 흐름은 일반적으로 파이프 조작에 쓰인다.다음에 우리는 파이프와 체인식으로 파일을 압축하고 압축하는 것이다.compress를 만듭니다.js 파일, 코드는 다음과 같습니다.
var fs = require("fs");
var zlib = require('zlib');

//   input.txt   input.txt.gz
fs.createReadStream('input.txt')
  .pipe(zlib.createGzip())
  .pipe(fs.createWriteStream('input.txt.gz'));
  
console.log(" 。");

코드 실행 결과는 다음과 같습니다.
$ node compress.js 
 。

이상의 조작을 실행한 후 현재 디렉터리에 input가 생성된 것을 볼 수 있습니다.txt의 압축 파일 input.txt.gz. 다음은 이 파일을 풀고decompress를 만듭니다.js 파일, 코드는 다음과 같습니다.
var fs = require("fs");
var zlib = require('zlib');

//   input.txt.gz   input.txt
fs.createReadStream('input.txt.gz')
  .pipe(zlib.createGunzip())
  .pipe(fs.createWriteStream('input.txt'));
  
console.log(" 。");

코드 실행 결과는 다음과 같습니다.
$ node decompress.js 
 。

좋은 웹페이지 즐겨찾기