Buffer
創建 Buffer
var buf1 = new Buffer(10);
var buf2 = new Buffer([10, 20, 30, 40, 50]);
var buf3 = new Buffer("京東(JD.COM)-綜合網購首選-正品低價、品質保障、配送及時、輕松購物!", "utf-8");
utf-8 是默認的編碼方式,此外它同樣支持以下編碼:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。
寫入緩沖區
語法
buf.write(string[, offset[, length]][, encoding])
buf3 = new Buffer(256);
len = buf3.write("京東(JD.COM)-綜合網購首選-");
console.log("寫入字節數 : "+ len);
從緩沖區讀取數據
語法
buf.toString([encoding[, start[, end]]])
console.log(buf3.toString('utf-8',0,6));
將 Buffer 轉換為 JSON 對象
var json = buf3.toJSON();
console.log("轉換為 JSON 對象 : "+json);
緩沖區合并
語法
Buffer.concat(list[, totalLength])
var buffer1 = new Buffer('京東(JD.COM)-綜合網購首選-');
var buffer2 = new Buffer('正品低價、品質保障、配送及時、輕松購物!');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 內容: " + buffer3.toString());
緩沖區比較
語法
buf.compare(otherBuffer);
返回一個數字,表示 buf 在 otherBuffer 之前,之后或相同。
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
console.log(buffer1 + " 與 " + buffer2 + "相同");
}else {
console.log(buffer1 + " 在 " + buffer2 + "之后");
}
拷貝緩沖區
語法
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("拷貝緩沖區 : " + buffer2.toString());
緩沖區裁剪
語法
buf.slice([start[, end]])
var buffer1 = new Buffer('京東(JD.COM)-綜合網購首選-');
var buffer2 = buffer1.slice(0,6);
console.log("緩沖區裁剪 : " + buffer2.toString());
緩沖區長度
console.log("緩沖區長度 : " + buffer1.length);
參考手冊
Stream
從流中讀取數據
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 fs = require("fs");
var data = '京東(JD.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("程序執行完畢");
管道流
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("程序執行完畢");
鏈式流
- 壓縮
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("文件壓縮完成。");
- 解壓縮
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("文件解壓完成。");
參考手冊
調試工具
npm install -g devtool
$ devtool main.js
代碼
https://github.com/hans007/JavaScriptCodes/tree/master/nodejs-do