Conveter Outputstream to Byte Array?

Como eu converto um outputstream to byte arraY?

Usando ByteArrayOutputStream?

O Objeto é Outputstream. Classe pai.

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

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

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

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

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

[quote=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 );[/quote]

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?

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

eu faço assim:

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

abraços

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

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