Classes derivadas de OutputStream

fonte: The Java Tutorial

Algumas das principais subclasses de OutputStream no pacote java.io são aquelas que determinam o destino dos dados transferidos pelo stream. São elas:

FileOutputStream
Facilidades para escrever em arquivos, usualmente utilizadas em conjunção com as classes BufferedOutputStream e DataOutputStream;
ByteArrayOutputStream
Facilidades para escrever para um arranjo de bytes interno, que cresce de acordo com a necessidade e pode ser acessado posteriormente através do método toByteArray() ou toString();
PipedOutputStream
Implementa a origem de um pipe de bytes, que serão lidos a partir de um objeto PipedInputStream.

Além dessas, outras classes derivadas de OutputStream são aquelas que agregam alguma funcionalidade associada à transferência da informação sendo escrita. Por exemplo, a classe DataOutputStream permite escrever valores de variáveis de tipos primitivos de Java em um formato binário portátil. Já a classe PrintStream oferece métodos para apresentar representações textuais dos valores de tipos primitivos Java, através de métodos print() e println(). Objetos da classe ObjectOutputStream permite transferir a representação de um objeto serializável para um OutputStream.