Bisher haben wir als Eingabe- und Ausgabequelle die Konsole verwendet. Die Eingaben kamen direkt zum Nutzer; die Ausgaben wurden auf die Konsole umgeleitet.
Es gibt noch andere Quellen (oder besser Datenströme), die man für Eingaben und Ausgaben in Programmen verwenden kann.
Eine davon sind Dateien: Wir unterscheiden zwischen Text- und Binärdateien.
In einer Textdatei wird der Inhalt zeichenweise gespeichert. D.h. ein Zeichen ist nicht unbedingt ein Byte. Wenn eine solche Datei ausgelesen wird, dann kann es sein, dass je nach Zeichensatz 1 oder auch mehrere Byte zusammenfassend als Zeichen gewertet werden.
Binärdateien speichern grundsätzlich alle Informationen byteweise. Für die Eingabe als auch die Ausgaben werden eventuell grafische Programme (wie paint) benötigt. Mit den Binärdateien werden wir uns nicht befassen.
Ein Programm kann einen Datenstrom zu einer Datei aufbauen. Dieser Datenstrom dient entweder dem Schreiben von Daten aus dem Programm in die Datei. Oder der Datenstrom dient dem Lesen von Daten aus einer Datei.
Es gibt verschiedene Modi (von Modus), mit welchem eine Datei in einem Programm geöffnet wird:
Diese Unterscheidung ist für den Entwurf eines Programms nicht so relevant. Hier geben wir nur an, dass eine Datei geöffnet werden muss. Im Quellcode müssen wir uns für einen Modus entscheiden.