Java IO

Aula
Estado
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 e java.nio
  • As classes abstratas definem operações gerais de leitura e escrita em binário ou texto. São elas InputStream e OutputStream para binário, Reader e Writer 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

notion image
  • O método flush garante que as informações escritas cheguem até o destino.
  • O método close executa um flush na corrente e depois a encerrra
Exemplo de algoritmo para cópia de arquivos binários (não recomendado, existe uma maneira melhor de fazer uma cópia)
Exemplo de algoritmo para cópia de arquivos binários (não recomendado, existe uma maneira melhor de fazer uma cópia)

notion image
Exemplo de algoritmo de cópia de arquivos de texto
Exemplo de algoritmo de cópia de arquivos de texto

Exemplo de transformação de uma corrente até um tipo de corrente que seja conveniente de ser utilizada
Exemplo de transformação de uma corrente até um tipo de corrente que seja conveniente de ser utilizada

Console

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