학습 포인트:
스트림에서 데이터 읽기
스트림에 쓰기
파이프 흐름
체인 흐름
노드 .js 스트림(스트림)
스트림에서 데이터 읽기
케이스: main.js
[code]var fs = require('fs'); var data = ''; // 创建可读流 var readerStream = fs.createReadStream('input.txt'); // 设置utf8编码 readerStream.setEncoding('UTF8'); // 处理流事件 // data 当有数据可读时触发 readerStream.on('data', function (chunk) { data += chunk; }); // end 当没有数据读时触发 readerStream.on('end', function () { console.log(data); }); // error 在接收和写入过程中发生错误时触发。 readerStream.on('error', function (err) { console.log(err.stack); }); console.log('程序执行完毕。');
스트림에 쓰기
사례: main2.js
[code]var fs = require('fs'); var data = '我是谁?'; // 创建写入流 var writeStream = fs.createWriteStream('ouput.txt'); // 编码 writeStream.write(data, 'UTF8'); // 标记文件末尾 writeStream.end(); // 处理流事件 // finish 所有数据已被写入到底层系统时触发。 writeStream.on('finish', function () { console.log('写入完成'); }); // error 在读入和写入数据是触发 writeStream.on('error', function (err) { console.log(err.stack); }); console.log('程序执行完毕。');
파이프라인 흐름
한 스트림에서 다른 스트림으로 데이터 입력
사례: 파이프 .js
[code]var fs = require('fs'); // 创建可读流 var readerStream = fs.createReadStream('input.txt'); // 创建写入流 var writeStream = fs.createWriteStream('ouput.txt'); // 管道读写 readerStream.pipe(writeStream); console.log('程序执行完毕。');
체인 흐름
은 여러 입력 및 출력 스트림을 연결하는 것입니다
사례: 압축 파일 express.js
[code]var fs = require('fs'); var zlib = require('zlib'); // 将 input.txt 压缩为 input.gz fs.createReadStream('input.txt') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream('input.gz')); console.log('文件压缩完毕');
사례: decompress.js
[code]var fs = require('fs'); var zlib = require('zlib'); // 解压 input.gz 为 input.gz.txt fs.createReadStream('input.gz') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('input.gz.txt')); console.log('解压文件完毕');
위 내용은 Node.js Stream( Stream) 내용입니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!