Como salvar um array de bytes como um arquivo binário?

Olá,

Tenho a seguinte dúvida: Eu estou fazendo uma aplicação que assina digitalmente um arquivo qualquer (txt, doc, xls, etc.) com uma chave privada extraída de um certificado e depois salva este arquivo assinado. No algoritmo de assinatura o arquivo a ser assinado é primeiro transformado em um array de bytes e depois passado como parâmetro para um método juntamente com a chave privada e o retorno desse método também é um array de bytes.

/**
   * Retorna a assinatura para o buffer de bytes, usando a chave privada.
   */
	public static byte[] crieAssinatura(PrivateKey key, byte[] buffer) throws Exception {
		Signature sig = Signature.getInstance( algoritmoDeAssinatura );
		sig.initSign(key);
		sig.update(buffer, 0, buffer.length);
		return sig.sign();
	}

Como eu faço para salvar o array de bytes retornado em um arquivo binário (digamos, um .doc ou um .xls da vida)? Eu procurei bastante mas só acho exemplos para salvar arquivos txt.

Obrigado,

Fischer

import java.io.*;
...
OutputStream os = new FileOutputStream ("chave.bin");
byte[] bytes = crieAssinatura(...);
os.write (bytes);
os.close();

Não se esqueça de tratar java.io.IOException etc.

Obrigado pela resposta Thingol,

E se eu quisesse que o usuário entrasse com o nome do arquivo através de um javax.swing.JFileChooser? Por exemplo, o usuário abre um documento.doc e depois quer salvar o documento assinado como documento_assinado.doc. Tem como fazer isso?

Fischer

Leia o javadoc do JFileChooser (o parâmetro que passei para FileOutputStream era uma String, mas pode ser um java.io.File se não me engano).