Por entrada e saída subentende-se o conjunto de mecanismos oferecidos para que um programa executando em um computador consiga respectivamente obter e fornecer informação de dispositivos externos ao ambiente de execução, composto pelo processador e memória principal.
De forma genérica, havendo um dispositivo de entrada de dados
habilitado, o programa obtém dados deste dispositivo através de uma
operação read()
. Similarmente, um dado pode ser enviado
para um dispositivo de saída habilitado através de uma operação
write()
.
A manipulação de entrada e saída de dados em Java é suportada através
de classes do pacote
java.io
. Essas classes
oferecem as funcionalidades para manipular a
entrada e saída de bytes, adequadas para a transferência
de dados binários, e para manipular a
entrada e saída de caracteres, adequadas para a transferência de
textos.
Como a velocidade de operação de dispositivos de entrada e saída é várias ordens de grandeza mais lenta que a velocidade de processamento, buffers são tipicamente utilizados para melhorar a eficiência dessas operações de leitura e escrita.
Outra funcionalidade associada à transferência de dados está relacionada à conversão de formatos, tipicamente entre texto e o formato interno de dados binários. Essa e outras funcionalidades são suportadas através do oferecimento de filtros que podem ser agregados aos objetos que correspondem aos mecanismos elementares de entrada e saída.
Dois dispositivos básicos de entrada e saída presentes em qualquer computador de propósito geral são o teclado (entrada) e o monitor (saída). Esses dispositivos já são habilitados pelo sistema operacional no início da execução de qualquer programa, sendo denominados dispositivos padrões.
Outro dispositivo de entrada e saída de vital importância é disco, manipulado pelo sistema operacional e por linguagens de programação através do conceito de arquivos.
Sendo Java uma linguagem de programação orientada a objetos, seria de se esperar que, além das funcionalidades usuais de entrada e saída, ela oferecesse também alguma funcionalidade para transferência de objetos. O mecanismo de serialização suporta essa funcionalidade.
© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP