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

3 respostas
Fischer

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

3 Respostas

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

Fischer

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

T

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

Criado 5 de março de 2007
Ultima resposta 5 de mar. de 2007
Respostas 3
Participantes 2