如何按换行符拆分 Node.js 中的缓冲区
How to split a Buffer in Node.js by newline
假设我们有一个缓冲区 b:
const b = Buffer.from('foo\nbar\nbaz');
有没有办法通过换行符将缓冲区分成N个缓冲区?不先转换为字符串?所以结果会是这样的:
const b1 = Buffer.from('foo');
const b2 = Buffer.from('bar');
const b3 = Buffer.from('baz');
您可以使用 buf.indexOf 在缓冲区中查找换行符,然后根据您的操作,您可以使用 buf.copy 复制到新的 Buffer 对象中。
下面的示例使用库 iter-ops,将缓冲区作为可迭代对象处理:
import {pipe, split, map} from 'iter-ops';
const i = pipe(
b, // your buffer object
split(a => a === 10), // = 0x0A code for \n
map(m => Buffer.from(m)) // remap into buffer
);
const [b1, b2, b3] = [...i]; // your 3 resulting buffers
这将在一次迭代中完成。
假设我们有一个缓冲区 b:
const b = Buffer.from('foo\nbar\nbaz');
有没有办法通过换行符将缓冲区分成N个缓冲区?不先转换为字符串?所以结果会是这样的:
const b1 = Buffer.from('foo');
const b2 = Buffer.from('bar');
const b3 = Buffer.from('baz');
您可以使用 buf.indexOf 在缓冲区中查找换行符,然后根据您的操作,您可以使用 buf.copy 复制到新的 Buffer 对象中。
下面的示例使用库 iter-ops,将缓冲区作为可迭代对象处理:
import {pipe, split, map} from 'iter-ops';
const i = pipe(
b, // your buffer object
split(a => a === 10), // = 0x0A code for \n
map(m => Buffer.from(m)) // remap into buffer
);
const [b1, b2, b3] = [...i]; // your 3 resulting buffers
这将在一次迭代中完成。