Latest web development tutorials

Node.js corriente (corriente)

Stream es una interfaz abstracta, Nodo tiene muchos objetos implementan esta interfaz. Por ejemplo, el servidor que inició la petición para la petición http objeto es una corriente, así como stdout (salida estándar).

Node.js, Arroyo Hay cuatro tipos de flujo:

  • Legible - la operación de lectura mecánica.

  • Grabable - las operaciones de escritura.

  • Duplex - lectura y escritura.

  • Transformar - funcionamiento datos a escribir y luego la lectura de los resultados.

Todos los objetos son instancias de EventEmitter Stream. eventos comunes incluyen:

  • datos - desencadenaron cuando los datos de tiempo de lectura.

  • final - sin desencadenar los datos más legibles.

  • error - activa cuando se produce un error en el proceso de escritura de recepción y.

  • Acabado - Se activa cuando todos los datos se han escrito en el sistema subyacente.

En este tutorial se introducirá operaciones de secuencias comunes.


Los datos de lectura de la corriente

Crear archivo entrada.txt, de la siguiente manera:

本教程官网地址:www.w3big.com

Crear archivo main.js, de la siguiente manera:

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("程序执行完毕");

El código de seguridad se ejecuta como sigue:

程序执行完毕
本教程官网地址:www.w3big.com

corriente de escritura

Crear archivo main.js, de la siguiente manera:

var fs = require("fs");
var data = '本教程官网地址:www.w3big.com';

// 创建一个可以写入的流,写入到文件 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("程序执行完毕");

Los datos de los programas anteriores se escriben en el archivo de datos variables salida.txt. resultados de ejecución de código son los siguientes:

$ node main.js 
程序执行完毕
写入完成。

Output.txt ver el contenido del archivo:

$ cat output.txt 
本教程官网地址:www.w3big.com

flujo de la tubería

Pipeline proporciona un mecanismo para el flujo de entrada de flujo de salida. Por lo general utilizados para obtener los datos y transferir los datos a otro flujo de una corriente.

Como se muestra en la imagen de arriba, se compararon los documentos cubo lleno de agua, y el agua es el contenido de los documentos, de manera que nos conectamos dos cubos de agua de un cubo en el otro cubo con un tubo (tubo), por lo poco a poco se dio cuenta de los archivos de gran tamaño proceso de replicación.

Los siguientes ejemplos nos quieren escribir en otro archivo leyendo el contenido de un archivo y el contenido.

Configuración entrada.txt documento dice lo siguiente:

本教程官网地址:www.w3big.com
管道流操作实例

Crear archivo main.js, de la siguiente manera:

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("程序执行完毕");

resultados de ejecución de código son los siguientes:

$ node main.js 
程序执行完毕

Output.txt ver el contenido del archivo:

$ cat output.txt 
本教程官网地址:www.w3big.com
管道流操作实例

Flujo de cadena

Cadena es otra corriente que fluye y crear múltiples flujos de cadena mecanismo operativo mediante la conexión de la salida. flujo de la cadena utiliza generalmente para la construcción de este gasoducto.

A continuación nos encontramos tubería y la cadena para comprimir y descomprimir archivos.

Crear archivo compress.js, de la siguiente manera:

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("文件压缩完成。");

resultados de ejecución de código son los siguientes:

$ node compress.js 
文件压缩完成。

Después de ejecutar la operación anterior, podemos ver el directorio actual creada bajo entrada.txt input.txt.gz archivo comprimido.

A continuación, vamos a descomprimir los archivos, crear decompress.js archivo, de la siguiente manera:

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("文件解压完成。");

resultados de ejecución de código son los siguientes:

$ node decompress.js 
文件解压完成。