Les entrées et les sorties d'une application sont organisées en Java
autour du modèle des flots (anglais stream), à
l'aide d'un ensemble très développé de types, mettant en uvre
divers patterns. Un flot est une suite de données (octets, caractères,
objets quelconques) successivement lues ou écrites. Ces flots sont
ainsi classifiés en flots d'entrée (qui comportent des méthodes de
lecture), et en flots de sortie (qui comportent des méthodes
d'écriture). Outre l'application, un flot d'entrée est connecté à une
source, et un flot de sortie à une cible. La source ou la cible d'un
flot peut être un fichier, un tampon en mémoire, une chaîne de
caractères, un autre flot, une ressource Web ou bien un port Internet.
Un type de flot est donc caractérisé par trois éléments : le type des
données, sa direction et sa connectivité.