Nodejs中的stream模塊

如今簡單說一下,nodejs中的stream模塊。html

fs   》fileSystem 文件系統,提供了不少的方法,方法有同步與異步。只不過異步中多了一個callback,裏面的第一參數是錯誤對象。前端

流(stream)在 Node.js 中是處理流數據的抽象接口(abstract interface)。 stream 模塊提供了基礎的 API 。使用這些 API 能夠很容易地來構建實現流接口的對象。node

Node.js 提供了多種流對象。 例如, HTTP 請求process.stdout 就都是流的實例。api

流能夠是可讀的、可寫的,或是可讀寫的。全部的流都是 EventEmitter 的實例。bash

首先了解一下stream模塊的分類異步

在nodejs中,有四種stream類型:
Readable:用來讀取數據,好比 fs.createReadStream()。
Writable:用來寫數據,好比 fs.createWriteStream()。
Duplex:可讀+可寫,好比 net.Socket()。
Transform:在讀寫的過程當中,能夠對數據進行修改,好比 zlib.createDeflate()(數據壓縮/解壓)。複製代碼

簡單讀取的一個txt文件。ui

let fs = require("fs");let path = require("path");
let result = fs.readFileSync(path.join(__dirname,"./1.txt"),'utf8');複製代碼

一、Buffer 的亂碼問題。spa

let buffer = Buffer.from("前端好好");let buff1= buffer.slice(0,5);let buff2= buffer.slice(5);console.log(buff1.toString());console.log(buff2.toString());

這樣會輸出亂碼以下。
前��好好=》解決上面的方法是用了一個模塊

複製代碼

let buffer = Buffer.from("前端好好");let buff1 = buffer.slice(0, 5);let buff2 = buffer.slice(5);
let { StringDecoder } = require('string_decoder');
let sd = new StringDecoder();console.log(sd.write(buff1).toString());console.log(sd.write(buff2).toString());

如今輸出就正常了。
前端好好
複製代碼

ps: 輸出路徑問題code

#!/usr/bin/env node

複製代碼
可讀流:例子以下.把「hello world」寫到1.txt裏面去。
var fs = require('fs');
var content = 'hello world';
var filepath = './1.txt';

fs.writeFile(filepath, content);複製代碼
相關文章
相關標籤/搜索