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. 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.
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.
Um 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. Dois dispositivos básicos de entrada e saída associados a qualquer processo são o teclado (entrada) e o monitor (saída), habilitados pelo sistema operacional no início da execução de qualquer programa como os dispositivos padrões.