Cómo agregar datos binarios a un búfer en node.js

Tengo un búfer con algunos datos binarios:

<code>var b = new Buffer ([0x00, 0x01, 0x02]);
</code>

y quiero anexar0x03.

¿Cómo puedo añadir más datos binarios? Estoy buscando en la documentación, pero para agregar datos debe ser una cadena; si no, se produce un error (TypeError: El argumento debe ser una cadena):

<code>var b = new Buffer (256);
b.write ("hola");
console.log (b.toString ("utf8", 0, 4)); //hola
b.write (", adios", 4);
console.log (b.toString ("utf8", 0, 11)); //hola, adios
</code>

Entonces, la única solución que puedo ver aquí es crear un nuevo búfer para cada dato binario adjunto y copiarlo en el búfer principal con el desplazamiento correcto:

<code>var b = new Buffer (4); //4 for having a nice printed buffer, but the size will be 16KB
new Buffer ([0x00, 0x01, 0x02]).copy (b);
console.log (b); //<Buffer 00 01 02 00>
new Buffer ([0x03]).copy (b, 3);
console.log (b); //<Buffer 00 01 02 03>
</code>

Pero esto parece un poco ineficiente porque tengo que crear una instancia de un nuevo búfer para cada apéndice.

¿Conoces una mejor manera de agregar datos binarios?

EDITAR

He escrito unEscritor Buffered que escribe bytes en un archivo usando buffers internos. Igual queBufferedReader pero para escribir

Un ejemplo rápido:

<code>//The BufferedWriter truncates the file because append == false
new BufferedWriter ("file")
    .on ("error", function (error){
        console.log (error);
    })

    //From the beginning of the file:
    .write ([0x00, 0x01, 0x02], 0, 3) //Writes 0x00, 0x01, 0x02
    .write (new Buffer ([0x03, 0x04]), 1, 1) //Writes 0x04
    .write (0x05) //Writes 0x05
    .close (); //Closes the writer. A flush is implicitly done.

//The BufferedWriter appends content to the end of the file because append == true
new BufferedWriter ("file", true)
    .on ("error", function (error){
        console.log (error);
    })

    //From the end of the file:
    .write (0xFF) //Writes 0xFF
    .close (); //Closes the writer. A flush is implicitly done.

//The file contains: 0x00, 0x01, 0x02, 0x04, 0x05, 0xFF
</code>

ÚLTIMA ACTUALIZACIÓN

Utilizarconcat.

Respuestas a la pregunta(3)

Su respuesta a la pregunta