Conveter Outputstream to Byte Array?

12 respostas
A

Como eu converto um outputstream to byte arraY?

12 Respostas

cv1

Usando ByteArrayOutputStream?

A

O Objeto é Outputstream. Classe pai.

A

A classe do meu objeto é OutputStream preciso transformar para um byte[] ou ByteArrayOutputStream

danieldestro

OutputStream os = ... byte[] b = new byte[os.available()]; os.read(b);

A

De onde vem o available(); este método não é reconhecido.

danieldestro

Ooopsss… haaha… confundí Output com Input…

Dá uma lida neste links: http://java.sun.com/j2se/1.4.2/docs/api/java/io/ByteArrayOutputStream.html

Mas acho que isso ajuda:

OutputStream os =... ByteArrayOutputStream bos = new ByteArrayOutputStream(); // grava bytes no BOS bos.writeTo( os );

T

Acho que alguém está confundindo InputStream com OutputStream.

De modo geral:

  • Todo ByteArrayOutputStream é um OutputStream. Se o seu método requer um OutputStream, você pode passar-lhe um ByteArrayOutputStream. Vamos dar um exemplo:
import java.io.*;

class TesteByteArrayOutputStream {
    
    public void testa (OutputStream os) throws IOException {
        os.write ("Hello, world!".getBytes());
    }
    public static void main(String[] args) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        TesteByteArrayOutputStream teste = new TesteByteArrayOutputStream();
        teste.testa (baos); // chamando o método que requer uma OutputStream
        baos.close();
        byte[] bytes = baos.toByteArray(); // aqui estão os bytes.
    }
}
rollei

danieldestro:
Ooopsss… haaha… confundí Output com Input…

Dá uma lida neste links: http://java.sun.com/j2se/1.4.2/docs/api/java/io/ByteArrayOutputStream.html

Mas acho que isso ajuda:

OutputStream os =... ByteArrayOutputStream bos = new ByteArrayOutputStream(); // grava bytes no BOS bos.writeTo( os );

Esse metodo que voce esta usando esta gravando o conteudo do bos no os e nao o contrario

Estou com um problema parecido, eu tenho na verdade um FileOutPutStream que estou pegando de um arquivo, soh que eu estou precisando do array de bytes desse OS para outro metodo, como converto esse FOPS em um BAOS? ou em um array de bytes?

Carlos_ds_jar

Ei galera e como eu poderia fazer, para obter o contrário ou seja, trasformar um array de bytes em um InputStream?

cs.santos0

eu faço assim:

private InputStream convert(byte[] stream) { return new ByteArrayInputStream(stream); }

abraços

Carlos_ds_jar

Valew chapa, nem me lembrava disso… :smiley: :smiley:

D

Apenas para deixar registrado:

Existe a forma de converter um InputStream pelo método:

InputStream inputStream = ... byte[] retorno = org.apache.commons.io.IOUtils.toByteArray(inputStream);

Criado 6 de julho de 2005
Ultima resposta 1 de fev. de 2012
Respostas 12
Participantes 8