如何应用 nodejs中的 Buffer?
封面图
•
2026-01-14
•
nodejs
307
0
0
0
在 Node.js 中,`Buffer` 是一个用于处理二进制数据的类。它主要用于处理网络通信、文件系统操作等需要处理原始字节流的场景。下面是一些常见的 `Buffer` 应用方式和示例: --- ## 1. 创建 Buffer ### 1.1 通过字符串创建 ```js const buf = Buffer.from('Hello, world!', 'utf-8'); console.log(buf); // <Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21> ``` ### 1.2 通过指定长度创建 ```js const buf = Buffer.alloc(10); // 创建一个长度为10的空Buffer console.log(buf); // <Buffer 00 00 00 00 00 00 00 00 00 00> ``` ### 1.3 通过数组创建 ```js const buf = Buffer.from([1, 2, 3, 4, 5]); console.log(buf); // <Buffer 01 02 03 04 05> ``` --- ## 2. 操作 Buffer ### 2.1 写入数据 ```js const buf = Buffer.alloc(10); buf.write('Node.js', 0, 'utf-8'); // 从位置0开始写入 console.log(buf.toString()); // "Node.js" ``` ### 2.2 读取数据 ```js const buf = Buffer.from('Hello, world!', 'utf-8'); console.log(buf.toString()); // "Hello, world!" console.log(buf.toString('utf-8', 0, 5)); // "Hello" ``` ### 2.3 切片(类似数组的 slice) ```js const buf = Buffer.from('abcdefgh', 'utf-8'); const subBuf = buf.slice(2, 5); // 从索引2到5(不包括5) console.log(subBuf.toString()); // "cde" ``` ### 2.4 合并多个 Buffer ```js const buf1 = Buffer.from('Hello '); const buf2 = Buffer.from('World!'); const result = Buffer.concat([buf1, buf2]); console.log(result.toString()); // "Hello World!" ``` --- ## 3. 常见应用场景 ### 3.1 网络通信(如 TCP/UDP) ```js const net = require('net'); const server = net.createServer((socket) => { socket.on('data', (data) => { console.log('Received:', data.toString()); socket.write('Echo: ' + data); }); }); server.listen(3000, () => { console.log('Server listening on port 3000'); }); ``` ### 3.2 文件读写 ```js const fs = require('fs'); // 读取文件 fs.readFile('example.txt', (err, data) => { if (err) throw err; console.log(data.toString()); }); // 写入文件 const content = Buffer.from('Hello from Buffer!'); fs.writeFile('output.txt', content, (err) => { if (err) throw err; console.log('File written successfully.'); }); ``` ### 3.3 处理二进制数据(如图片、音频) ```js const fs = require('fs'); // 读取图片 fs.readFile('image.jpg', (err, data) => { if (err) throw err; // 可以对 data 进行处理或发送到客户端 }); ``` --- ## 4. Buffer 的注意事项 - `Buffer` 是 Node.js 特有的类型,不是 JavaScript 标准的一部分。 - 默认使用 `utf-8` 编码,但也可以指定其他编码(如 `base64`, `hex`, `ascii`, `latin1` 等)。 - 不要直接修改 `Buffer` 的长度,可以使用 `slice()` 或 `concat()` 来操作。 --- ## 5. 示例:将字符串转为 Base64 ```js const str = 'Hello, world!'; const base64 = Buffer.from(str).toString('base64'); console.log(base64); // "SGVsbG8sIHdvcmxkfQ==" ``` --- 如果你有具体的应用场景(比如处理 HTTP 请求体、解析二进制协议、加密解密等),我可以提供更具体的示例。欢迎继续提问!
上一篇:
nodejs 中的事件循环是什么 ?
下一篇:
nodejs的网络模块都有哪些?
标题录入,一次不能超过6条
留言
评论