Dart File readAsString writeAsString

Natürlich kann man mit der Programmiersprache Dart auch Files lesen und schreiben.
Um das zu bewerkstelligen importieren wir die dart:io Library, sprich die Bibliothek, die uns die entsprechenden Klassen und Methoden / Funktionen zur Verfügung stellt





File readAsString


Beispiel Code:

Eine Funktion die eine Datei komplett als Zeichenkette ausliest. Was gleichzeitig bedeutet, das sie sich nur für kleine Dateien bzw Anwendungsfälle mit kurzen Zeichenketten eignet.
Das erste was auffällt, ist die asynchrone Implementierung. Der Rückgabewert ist ein Future Objekt vom Typ String.
Mit new File(...) wird ein neues File Objekt erzeugt, wobei man dieser Funktion den Filenamen als String übergibt.
Die Funktion geht davon aus, das sich dieses File auf der obersten Ebene des Projekt Ordners befindet. Natürlich ist auch ein anderer Pfad möglich, dazu aber mehr in einem anderen Post.
Die eigentliche Arbeit geschieht mit readAsString(). Der Funktion kann noch mitgegeben werden, wie der String codiert ist.Wird das unterlassen geht Dart von einer utf8 Codierung aus. Möchten wir das ändern müssen wir die dart:convert Bibliothek in unser Programm einbinden. Bei einem ascii File sähe das dann so aus:


 .readAsString(encoding:ascii);

Im Beispiel Code schreiben wir das gelesene File in eine Liste. Diese ist vom Typ Future String und man beachte, das sie mit [] initialisiert wurde. Unterlässt man das, belegt Dart die Variable mit null, was zu einem Fehler in der Programmausführung führt.

Fazit: Mit readAsString lesen wir eine ganze Zeichenkette aus einer Datei, die wir dann weiter verarbeiten können. Man beachte das dies in diesem Beispiel asynchron von statten geht. Das mischen von synchronem und asynchronem Code ist eine häufige Fehlerquelle.



File writeAsString



Beispiel Code:

Das Gegenstück ist sehr ähnlich aufgebaut. Auch hier benötigen wir den Filenamen. Zusätzlich natürlich auch die Daten, die wir in das File schreiben möchten.
.writeAsString können wir noch einen Modus mitgeben, wie er die Daten in das File schreiben soll. Im Beispiel Code hängen wir unsere Zeichenkette an das Ende des Files. Die Möglichkeiten im Überblick:

  • append (öffnet ein File zum schreiben. Schreibt den neuen Inhalt an das Ende. Sollte
    das File nicht existieren, wird es erstellt.)
  • write / writeOnly (wenn das File bereits besteht, wird es überschrieben. Existiert es noch nicht, wird es erstellt.)
  • writeOnlyAppend (öffnet ein File und schreibt unsere Daten an das Ende. Existiert das File noch nicht, wird es erstellt.
Fazit: Mit writeAsString schreiben wir eine Zeichenkette in ein File. Wie das geschieht legen wir durch den Modus fest, welchen wir der Funktion mit übergeben.

Zum Abschluss noch das main.dart File. Die main Funktion wurde als asynchron gekennzeichnet. Der weitere Code sollte selbsterklärend sein:
Abschließend möchte ich noch erwähnen, das im Beispiel Code gänzlich auf ein Fehlerhandling verzichtet wurde. In einem realen Projekt wäre diese aber sicher unerlässlich!

Kommentare

Beliebte Posts aus diesem Blog

Material Design in Flutter Teil 2

Dart Basic: Listen Part 1

Listen in Dart (2021): Part 1 List.filled List.empty und List.add