Jede Ein- und Ausgabe arbeitet grundsätzlich über so genannte Streams. Darunter verstehen wir Datenströme, die von verschiedenen Geräten eingehen und auf verschiedene Geräte ausgegeben werden können. Ein Input-Stream kann also einerseits Eingaben von der Konsole oder von einem Datenspeicher entgegennehmen - die verwendeten Methoden sind dabei gleich oder sehr ähnlich zu handhaben.