Grundlagen der Programmierung: Basiswissen

Dateizugriff

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Viele Programmiersprachen können Dateien, die auf einer Festplatte gespeichert sind, öffnen sowie Dateien auf einer Festplatte ablegen.

Transkript

Man hat häufig den Bedarf, dass ein Computerprogramm eine Datei auf der Festplatte öffnet, oder auch eine eigene Datei dort ablegt. Wenn ich Ihnen das in JavaScript zeigen wollte, dann wäre der Film jetzt zu Ende, aus. JavaScript kann das nicht aus Sicherheitsgründen. Keine Chance. Es gibt zwar nicht-standardkonformes JavaScript, und es gibt eine File-API von HTML5, aber das typische Standard-JavaScript kann das alles nicht. JavaScript wird ja auf normalen Webseiten verwendet und die können eben nicht auf Ihre Festplatte zugreifen und das ist übrigens auch ganz gut so, denke ich. Aber ich glaube, der Dateizugriff ist dennoch ein wichtiger Grundsatz innerhalb der Programmierung und deswegen möchte ich ihn hier behandeln. Ich fange mit ein paar Pseudocode-Beispielen an und dann zeige ich Ihnen, wie das in einer ganz normalen Programmiersprache ausschaut. Der Dateizugriff "File Input", "File Output" kann manchmal etwas schwieriger sein, als man das sich zuerst denkt. Der Umgang mit "File Input" "File Output" kann manchmal etwas komplizierter sein, als man sich das zunächst einmal vorstellt. Denn wir brauchen neben dem Dateinamen auch eine Möglichkeit, die Datei erstens zu öffnen, zweitens die Inhalte dieser Datei zu lesen, und drittens die Datei auch wieder zu schließen. Schauen wir uns mal als Pseudocode an, wie man Dateien liest. Also zunächst einmal müssen wir irgendwie eine Datei öffnen, in dem Fall "EineDatei.txt". Dann müssen wir die Inhalte dieser Datei irgendwie in eine Variable übertragen, damit wir mit diesen Inhalten später auch arbeiten können, zu guter Letzt müssen wir das Ganze auch wiederum schließen. Dieser Name "EineDatei.txt", der setzt voraus, dass die Datei sich im selben Verzeichnis befindet, wie das Programm, von dem aus ich diese Datei lesen möchte. Ansonsten müsste man hier entweder eine relative oder eine absolute Pfadangabe setzen. Schauen wir uns mal in einem Beispiel aus dem richtigen Leben an, wie man Dateien in Ruby liest. Und diesen Code, den Sie hier sehen, müssen Sie nicht auswendig lernen und Sie müssen nicht lernen, wie man diesen Code schreibt. Mir geht es darum zu zeigen, wie die einzelnen Schritte sind, um eine Datei tatsächlich in einer echten Programmiersprache zu öffnen. In Zeile 1, da haben wir eine Variable, die heißt "fileName" und der übergeben wir eine Zeichenkette namens "Dateiname.txt", das ist die Datei, die wir tatsächlich lesen wollen. Eine Zeile darunter, da sehen Sie dann "file.open", also irgendwie muss hier eine Datei geöffnet werden, und mit "fileName" übergeben wir ihr einen Namen. Dann haben wir hinten noch dieses kleine "r" stehen. "r" ist die Abkürzung für "readable", das heißt, wir öffnen diese Datei im Lesemodus. Es gibt noch unterschiedliche Modi, einen Schreibmodus, da schreiben wir ein "w", für "write". Wir können es im Lese- und Schreibmodus öffnen, das wäre dann "r+". Die Unterschiede bestehen darin, dass wenn ich eine Datei nur im Lesemodus öffne, dann können Andere gleichzeitig diese Datei bearbeiten. Wohingegen wenn ich Sie im Schreibmodus aufmache, dann kann niemand Anderes mehr auf diese Datei schreibend zugreifen. Und ein einfacher Lesemodus, der verbraucht auch weniger Ressourcen, geht schneller und ist an sich auch sicherer als der Schreibmodus. Die nächsten Zeilen, da haben wir dann ein "eachLine", also offensichtlich gehen wir dann hier Zeile für Zeile durch. Das ist der gesamte Codeblock. Und mit "puts line", das steht eigentlich für "put s", also gebe einen String aus, "put String", und dieser String hat den Namen "line". Da können wir jetzt Zeile für Zeile die Datei eben ausgeben. Zu guter Letzt wichtig: mit "fClose" machen wir diese Datei dann auch wiederum zu. Schauen wir uns mal an, wie wir Dateien in Ruby auch schreiben können. Das hier ist der entsprechende Code. Zunächst haben wir eine Variable, die nennen wir "message", da packen wir eine Zeichenkette rein, das ist ein Text. Und wir haben einen Filenamen, "meinOutput.txt", und darin steht eben der Name unserer Datei, die wir schreiben wollen. Ich habe jetzt hier etwas anderen Code, Sie sehen keine geschweiften Klammern, aber der Code ist ganz normal gültig. Mit "File", "Open", "Filename", da machen wir ein File auf, eine Datei wird eben geöffnet. Und dann sehen wir hier dieses "w" in Anführungszeichen, das heißt diese Datei soll im Schreibmodus geöffnet werden, wir möchten ja Inhalte hineinschreiben. Und dann haben wir in der nächsten Zeile ein "f write message", das heißt wir schreiben den Inhalt der Variablen "message" in diese Datei hinein. Und ganz am Ende, da haben wir das Wort "end", das bedeutet, dass die Datei auch wiederum zugemacht werden soll und dass sie dann für andere wieder zugänglich ist. Das ist dieses Beispiel, wie wir Dateien in Ruby tatsächlich schreiben. Schauen wir uns mal an, wie wir mit ganz großen Dateien arbeiten. Also wenn wir bspw. den Inhalt einer Datei nicht so mir nichts, dir nichts in eine Variable packen können, weil er z.B. sehr, sehr groß ist, mehrere MB, oder weil es sich um eine Binärdatei handelt, in der ja gar nicht einzelne Zeichen enthalten sind wie in einem Textfile, sondern in dem es z.B. ein Bild ist, oder ein Video, oder sowas. Wie gehen wir dann vor? Zunächst einmal ist es klar: Wir öffnen eine Datei, in dem Fall heißt sie immer noch meineDatei.txt. Und dann gehen wir zeilenweise durch. Wir sagen: solange es noch Zeilen gibt, lese diese Zeile, zeige diese Zeilen an, und dann schau nach: Gibt es noch mal Zeilen, ja, also lese sie, zeige sie an, und so weiter. So lange, bis es keine Zeilen mehr gibt, und erst dann mach Ende. Und wichtig: Danach schließe diese Datei auch wieder. Das ist eine Möglichkeit, um mit sehr großen Dateien umzugehen, die wir nicht komplett auf einmal in eine Variable übertragen können oder übertragen wollen. Es gibt noch eine andere Möglichkeit, wie wir mit Dateien umgehen, und das sind sogenannte Streams. Stellen Sie sich vor, Sie haben z.B. einen Videostream, oder einen Audiostream, Sie möchten Internetradio irgendwie mit einem Programm bearbeiten. Dann haben Sie keine Datei, die irgendwo existiert, die Sie aufmachen und wieder zumachen und das war es. Sondern Sie haben einen fortlaufenden Strom von Daten, der quasi keinen Anfang kennt und kein Ende kennt. Aber im Grunde genommen ist es das gleiche Verfahren wie bei anderen Files auch. Wir öffnen diesen Stream, wir lesen diesen Stream dann Zeile für Zeile für Zeile für Zeile für Zeile, da gibt es quasi gar kein Ende. Und irgendwann, wenn wir genug haben, oder wenn der Benutzer das Programm abbricht, oder wenn irgendein Ereignis auftritt, dann beenden wir den Stream, wir schließen ihn wieder und fahren mit unserem normalen Programm fort. Es gibt verschiedene Arten und Weisen, wie wir mit Programmiersprachen auf Dateien und auf Streams zugreifen können, aber im Prinzip ist es immer derselbe Weg: Datei aufmachen, Daten lesen oder schreiben, und am Ende, ganz wichtig, die Datei auch wieder schließen.

Grundlagen der Programmierung: Basiswissen

Steigen Sie ein in die Welt der Computerprogrammierung und verschaffen Sie sich das Grundwissen, um schon bald eigene Lösungen und Anwendungen zu schreiben.

5 Std. 38 min (64 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!