Como anexar dados binários a um buffer no node.js

Eu tenho um buffer com alguns dados binários:

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

e eu quero acrescentar0x03.

Como posso acrescentar mais dados binários? Eu estou procurando na documentação, mas para acrescentar dados, deve ser uma string, se não, ocorre um erro (TypeError: Argumento deve ser uma string):

<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>

Então, a única solução que posso ver aqui é criar um novo buffer para cada dado binário anexado e copiá-lo para o buffer principal com o deslocamento correto:

<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>

Mas isso parece um pouco ineficiente porque eu tenho que instanciar um novo buffer para cada append.

Você conhece uma maneira melhor de anexar dados binários?

EDITAR

Eu escrevi umBufferedWriter que grava bytes em um arquivo usando buffers internos. Igual aBufferedReader mas por escrito.

Um exemplo 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 ATUALIZAÇÃO

Usarconcat.

questionAnswers(3)

yourAnswerToTheQuestion