Dart stdin readLineSync

Wer Programme schreibt muss oft auch User Input verarbeiten können. In Dart geht das sehr unkompliziert. Wir benötigen dazu die dart:io Library, die wir in unser Projekt mit einbinden. Sie stellt uns viele Funktionen zur Verfügung, die wir in diesem Zusammenhang brauchen.


Zuerst hier das Code - Beispiel:

Als erstes muss ich erwähnen, das man den Code über das Terminal ausführen sollte. Man kann ihn nicht über  den Debugger von Visual Studio Code testen. Im Terminal in das Verzeichnis von main.dart wechseln und das Programm ausführen. In meinem Fall wird mit $dart main.dart das Programm gestartet. Prinzipiell ist der Code asynchron, was mit dem Schlüsselwort async angezeigt wird.

Als erstes definieren wir ein File Objekt, meinFile und drucken einen String in die Konsole. Mit

stdin.readLineSync();

lesen wir eine Zeile vom Input. Die Eingabe der Zeichenkette wird durch ein Return (CR) abgeschlossen, dieser Abschluss wird in der Default Einstellung nicht an uns übermittelt und kann je nach Betriebssystem variieren. readLineSync() im Detail:

String readLineSync({Encoding encoding:systemEncoding,bool retainNewLines:false})

In der Default Einstellung dekodiert diese Funktion die eintreffenden Daten zu einer Zeichenkette. Dabei wird die Standard Systemvariante verwendet, solange nicht anders angegeben. Wir könnten durch einen bool Wert auch bestimmen, das wir den Linienabschluss Code mit übermittelt bekommen. In der Grundeinstellung ist das ja nicht der Fall. Die Funktion .writeAsString hatten wir ja schon in einem anderen Post erwähnt. Hier ist zu beachten, das wir mit FileMode verschiedene Varianten des Zugriffs auf das File implementieren können.  Wir benutzen als erstes:

mode:FileMode.write

Er überschreibt das File, sollte es schon existieren, oder legt es neu an, falls nicht. Die zweite Variante:

mode:FileMode.writeOnlyAppend

öffnet ein File um die zu schreibenden Daten am Ende anzuhängen. Sollte das File nicht existieren, legt auch diese Funktion die Datei neu an. Am Schluss ermitteln wir noch die Länge des Files und drucken diesen integer Wert in die Konsole. Alles einfach und simpel, oder ?


Kommentare

Beliebte Posts aus diesem Blog

Dart Basic: Strings Part 1

Dart Basic: Parameter in Funktionen

Dart Basic: Listen Part 1