Mit Dart den Where Befehl auf Windows ausführen

 

Ich finde es ist Zeit sich noch einmal  näher mit dem Thema Files zu beschäftigen. In einem schon älteren Post hatte ich darüber geschrieben, wie Sie zum Beispiel herausfinden, auf welcher Platform Ihr Dart Code läuft. 

Oder wie Sie Files lesen und schreiben. In diesem Post geht es darum einen CMD (Eingabeaufforderung) Befehl auszuführen. Konkret: Where 

Mit Where ist es möglich den absoluten Pfad einer Datei zu finden, immer vorausgesetzt, die Datei existiert. Der Befehl selbst hat verschiedene Optionen. Hier aber zuerst den Dart Code:

Der Code im Detail:

Wir benötigen die dart:io Library und binden sie als import ein. Den Code könnte man als Version für zwei Betriebssysteme anlegen, z.b. Apple und Windows. 


executable


Um den Code zu verstehen sollten Sie wissen, das das Kernstück dieses kleinen Programms 
Process.start ist. Durch das Argument runInShell: true wird die  cmd.exe von Windows als Prozess gestartet. Where wiederum funktioniert innerhalb der cmd Umgebung und ist dementsprechend das Argument für die Variable executable.

arguments


Dies ist eine Liste der Optionen, die Sie dem Befehl Where übergeben können. Mit /r sucht Where rekursiv und mit C:\\ geben wir an, wo die Suche starten soll. dart4.dart ist in diesem Beispiel das File, nach dem gesucht wird.

Process.start


Das ist das Herzstück des Codes. Wie der Name schon sagt, wird der Prozess gestartet. Man beachte: Wie der gesamte Code, ist auch diese Funktion asynchron. Dass heisst diese Funktion gibt als Ergebnis ein Future zurück. 

stdout / stderr


Die cmd.exe von Windows hat einen Standard Ausgabe Stream. Mit cmd.stdout fügen wir diesen dem Ausgabestream unseres Codes hinzu: stdout.addStream(cmd.stdout)
stderr ist der "Kanal" für Fehlermeldungen. Identisch zu stdout wird der Stream von der cmd.exe, dem Stream unserer Anwendung hinzugefügt.

Ergebnis

Der Code druckt den absoluten Pfad der gesuchten Datei in das Terminal. Sollte die Datei nicht gefunden werden, die entsprechende Fehlermeldung. Bis bald.

Kommentare

Beliebte Posts aus diesem Blog

Material Design in Flutter Teil 2

Flutter -- ohne Dart geht es nicht 2 -- einfache Variablen Typen

Dart Final Const