Converter um array de byte em um File

4 respostas
anderson.bonavides

Pessoal como diz o assunto eu gostaria de converter um array de byte em um file.
Tentei da seguinte forma mas não tive sucesso:

byte[] b = new byte[out.size()];
out.write(b);
out.flush();
out.close();
File f = new File(new String(b));
Descobri que isso só serve para textos, porém meu arquivo são imagens com textos, fotos e etc em pdf.

Segue meu código completo:

public Boolean insereImagemNoBanco(ArrayList<Anexo> anexoGuia,	HttpServletRequest request, HttpServletResponse response) throws CMSException, IOException {
		
		final String CONTENT_TYPE = "text/html; charset=windows-1252";
		String mimeType = CONTENT_TYPE;
		BLOB blob = null;
		ConvertePDFToImage convertePDFToImage = new ConvertePDFToImage();

		for (Iterator iterator = anexoGuia.iterator(); iterator.hasNext();) {
			Anexo anexo = (Anexo) iterator.next();
			
			File file = new File(anexo.getPathArquivo());
			FileInputStream fis = new FileInputStream(file);
			CMSSignedData dados;
			dados = new CMSSignedData(fis);
			fis.close();
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			CMSProcessable conteudo = dados.getSignedContent();
			conteudo.write(out);
			try {
				Magic parser = new Magic();
				parser.initialize();
				MagicMatch match = parser.getMagicMatch(out.toByteArray());
				mimeType = match.getMimeType();
			} catch (Exception e) {
				e.printStackTrace();           
				System.out.println("Erro ao detectar o tipo de conteúdo do arquivo ");
			}
			
			//LUGAR ONDE TENTO CONVERTER UM ARRAY DE BYTE PARA UM FILE
			
			byte[] b = new byte[out.size()];
			out.write(b);
			out.flush();
			out.close();
			File f = new File(new String(b));
			
			//InputStream is = new FileInputStream();
			convertePDFToImage.convert(anexo, 0);
			
			
			
		}
		return true;
	}

Grato!

4 Respostas

T

Um java.io.File não é um arquivo (vou repetir isso mil vezes) e sim um nome de diretório ou nome de arquivo + diretório.

Se você precisa converter um array de bytes para um arquivo, use um java.io.FileOutputStream.

anderson.bonavides

Mas a intenção é realmente converter em um File.
É possível, e como poderia fazer isto?

T

Você quer converter um array de bytes em um arquivo (não me confunda com java.io.File, por favor).

Primeiramente, você tem de determinar o nome do arquivo de destino (isso é com você).

A seguir, faça algo como:

byte[] bytes = ...;
File f = new File ("nome do arquivo de destino");
FileOutputStream fos = null;
try {
    fos = new FileOutputStream (f);
    fos.write (bytes);
} finally {
    if (fos != null) try { fos.close(); } catch (IOException ex) {}
}
anderson.bonavides

Oi thingol, parece q deu certo. Vou tentar aqui.

Grato!

Criado 16 de junho de 2009
Ultima resposta 16 de jun. de 2009
Respostas 4
Participantes 2