Лучшее руководство по Node.js поток (поток) в 2024 году. В этом руководстве вы можете изучить Чтение данных из потока,Написать поток,поток трубопровода,Flow Chain,
Поток представляет собой абстрактный интерфейс, узел имеет множество объектов реализуют этот интерфейс. Например, сервер, который инициировал запрос на объект запроса HTTP является потоком, а также стандартный вывод (стандартный вывод).
Node.js, поток Есть четыре типа потока:
Читаемые - читаемый операция.
Writable - операции записи.
Дуплекс - операции чтения и записи.
Transform - операционные данные должны быть записаны , а затем зачитывает результаты.
Все объекты являются экземплярами EventEmitter Stream. Общие мероприятия включают в себя:
Данные - срабатывает , когда данные времени считывания.
конец - не вызывая более считываемые данные.
Ошибка - активируется при возникновении ошибки в приеме и процесса записи.
отделка - Пожары , когда все данные были записаны в базовой системе.
Этот учебник будет ввести общие операции потока.
Создание input.txt файл, следующим образом:
本教程官网地址:www.w3write.com
Создание main.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("程序执行完毕");
Приведенный выше код выполняется следующим образом:
程序执行完毕 本教程官网地址:www.w3write.com
Создание main.js файл, следующим образом:
var fs = require("fs"); var data = '本教程官网地址:www.w3write.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("程序执行完毕");
Приведенные выше данные программы будут записаны в переменной output.txt файла данных. Результаты выполнения кода заключаются в следующем:
$ node main.js 程序执行完毕 写入完成。
Output.txt просмотреть содержимое файла:
$ cat output.txt 本教程官网地址:www.w3write.com
Как показано на рисунке выше, мы сравнили документы ведро с водой, а вода содержимое документов, так что мы подключаем два ведра воды из ведра в другое ведро с трубой (труба), так медленно реализуется процесс репликации больших файлов.
Следующие примеры, которые мы хотим записать в другой файл, читая содержимое файла и содержимое.
Установка input.txt документа гласит:
本教程官网地址:www.w3write.com 管道流操作实例
Создание main.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 本教程官网地址:www.w3write.com 管道流操作实例
Цепь другой текущий поток и создать несколько потоков цепной механизм операционной, подключив выход. Цепь потока обычно используется для эксплуатации трубопровода.
Далее мы трубы и цепи для сжатия и распаковки файлов.
Создание 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 文件解压完成。