Ler informação de várias fontes, escrever informações em vários destinos. As informações são transferidas através de uma série de correntes interconectadas (pipes).
- Uma corrente (stream), nesse caso, não é o mesmo que as Streams de objetos da Java Streams API. Elas são um fluxo de dados, texto ou binário
- As fontes e destinos podem ser arquivos, Network Sockets, console, memória, etc.
- as correntes são categorizadas de acordo com
- o tipo de dados que ela carrega (e.g. texto ou binário)
- a direção da corrente, input ou output
- o tipo de fonte ou destino que ela está conectada
- outras características como filtros e transformação de dados
Java Input-Output API
- Localizados nos pacotes
java.io
ejava.nio
- As classes abstratas definem operações gerais de leitura e escrita em binário ou texto. São elas
InputStream
eOutputStream
para binário,Reader
eWriter
para caracteres
- As classes concretas descendem das abstratas para adicionar funcionalidades mias específicas, como:
- conectar a diferentes fontes e destinos
- transformar o conteúdo de uma corrente
- executar carregamento prévio (buffering) de conteúdo
- providenciar métodos convencionais

- O método
flush
garante que as informações escritas cheguem até o destino.
- O método
close
executa umflush
na corrente e depois a encerrra




Console
- Uma maneira primitiva de utilizar IO com um console é através de
System.out
,System.in
eSystem.err
- A classe
Console
permite acesso ao sistema de console com operações comoreadLine
,readPassword
(não exibe os caracteres),reader
ewriter
- a presença dessa classe depende do ambiente em que a aplicação Java está rodando; se ele não existir é retornado
null
