中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js之Buffer和Stream模塊系統怎么應用

發布時間:2022-08-26 17:45:26 來源:億速云 閱讀:179 作者:iii 欄目:開發技術

這篇文章主要介紹“Node.js之Buffer和Stream模塊系統怎么應用”,在日常操作中,相信很多人在Node.js之Buffer和Stream模塊系統怎么應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Node.js之Buffer和Stream模塊系統怎么應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

JavaScript語言本身只有字符串數據類型,沒有二進制數據類型。 但是,在處理TCP流或文件流時必須使用二進制數據。 因此,在node JS中,定義了一個緩沖區類來創建用于存儲二進制數據的緩沖區。

const buf = Buffer.from('runoob', 'ascii');

在node JS中,緩沖區類是與node內核一起發布的核心庫。 緩沖庫是node JS帶來的一種存儲原始數據的方法,它允許節點JS。

console.log(buf.toString('hex'));
console.log(buf.toString('base64'));

原始數據存儲在buffer類的實例中。緩沖區類似于整數數組,但它對應于V8堆內存之外的一段原始內存。

寫入緩沖區

寫入 Node 緩沖區的語法如下所示:

buf.write(string[, offset[, length]][, encoding])
  • string - 寫入緩沖區的字符串。

  • offset - 緩沖區開始寫入的索引值,默認為 0 。

  • length - 寫入的字節數,默認為 buffer.length

  • encoding - 使用的編碼。默認為 'utf8' 。

buf = Buffer.alloc(256);
len = buf.write("www.runoob.com");
console.log("寫入字節數 : "+  len);

輸出為:

$node main.js 寫入字節數 : 14

buf.write(string[, offset[, length]][, encoding]) 根據參數偏移量和指定的編碼方法將參數字符串數據寫入緩沖區。偏移量的默認值為0,默認編碼方法為utf8。 長度是要寫入的字符串的字節大小。返回數字類型,指示寫入了多少8位字節流。 如果緩沖區沒有足夠的空間容納整個字符串,它將只寫入部分字符串。默認情況下,長度是緩沖區長度-偏移量此方法似乎無法寫入某些字符。

buf.writeDoubleBE(value, offset[, noAssert]) 根據傳遞的偏移量和指定的endian格式將值寫入緩沖區。 注意:值必須是有效的64位雙精度值。如果參數noassert為真,則不會驗證值和偏移參數。 這意味著該值可能太大,或者偏移量可能超過緩沖區的末尾,從而導致丟棄該值。 默認值為false。

從流中讀取數據

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

管道流

管道為輸出流到輸入流提供了一種機制。通常我們使用它從一個流中獲取數據并將其傳遞給另一個流。 創建一個可讀流

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

創建一個可寫流

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

管道讀寫操作,讀取 input.txt 文件內容,并將內容寫入到 output.txt 文件中。

readerStream.pipe(writerStream);

鏈式流

鏈接是一種將輸出流連接到另一個流并創建多個流操作鏈的機制。鏈流通常用于管道操作。 接下來,我們使用管道和鏈來壓縮和解壓縮文件。

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'));

執行上述操作后,我們可以看到輸入Txt壓縮文件input.Txt.gz。 接下來,讓我們解壓文件并創建解壓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'));

模塊系統

以便啟用節點的文件。js相互調用,節點。js提供了一個簡單的模塊系統。 模塊是JS應用程序的基本組件,文件和模塊是一一對應的。 換句話說,node JS文件是一個模塊。該文件可以是JavaScript代碼、JSON或編譯的C/C++擴展。 hello.js

function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
};

模塊接口中唯一的變化是使用模塊Exports=Hello,而不是Exports world=function(){} 當模塊被外部引用時,其接口對象是要輸出的Hello對象本身,而不是原始導出。

var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello();

Node.js之Buffer和Stream模塊系統怎么應用

到此,關于“Node.js之Buffer和Stream模塊系統怎么應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

古丈县| 常州市| 志丹县| 鹤岗市| 和龙市| 弋阳县| 海淀区| 双流县| 福安市| 朝阳市| 花垣县| 安国市| 湖南省| 江孜县| 锡林浩特市| 石城县| 乌鲁木齐县| 海宁市| 从江县| 赞皇县| 克什克腾旗| 云林县| 乌拉特前旗| 平和县| 芦山县| 延津县| 潮州市| 霞浦县| 河东区| 大方县| 浮梁县| 千阳县| 都江堰市| 普安县| 繁昌县| 乌拉特后旗| 林口县| 罗定市| 武强县| 常宁市| 玉屏|