Aktuelle Zeile bei Kommandozeilen Applikationen aktualisieren
Vielleicht ist euch das ja auch schon Mal passiert, ihr entwickelt eine Kommandozeilen-App und wollt die Aktuelle Zeile ändern. Ein Beispiel dafür wäre ein Fortschrittsbalken oder der beliebte Command-Line-Spinner ( bestehend aus den Zeichen /, -, \, |. Wenn diese nacheinander angezeigt werden sieht das so aus wie ein sich drehender Ast
Das Ganze kann in allen Kommandozeilenfenstern, egal ob Unix oder Windows implementiert werden. Der Schlüssel hierzu ist das Sonderzeichen \b - welches das Drücken der Backspace Taste simuliert. Ähnliche Vertreter sind \t für Tab und \n für Zeilenumbruch.
Solange ihr noch keinen Zeilenumbruch abgesetzt habt könnt ihr jede Ausgabe in der aktuellen Zeile widerrufen durch das ausgeben von \b dabei müsst ihr jedes Zeichen einzeln widerrufen. Wenn wir nun also unser Spinner-beispiel betrachten kann man das sehr einfach in .NET umsetzen:
static void Main(string[] args) { string[] states = { "\\", "|", "/", "-" }; int cur_state = 0; while (true) { Thread.Sleep(100); Console.Write("\b"); Console.Write(states[cur_state]); cur_state++; if (cur_state == 4) { cur_state = 0; } } }Genauso einfach geht das Ganze dann auch in Java:
public static void Main(string[] args) { string[] states = { "\\", "|", "/", "-" }; int cur_state = 0; while (true) { try { Thread.sleep(100); } catch (InterruptedException ex) {} System.out.print("\b"); System.out.print(states[cur_state]); cur_state++; if (cur_state == 4) { cur_state = 0; } } }Ist in jedem Fall ein nettes Gimmick
Beachten sollte man noch, dass man hier print() bzw. Write() benutzen muss und nicht println() oder WriteLine() da hier sonst automatisch ein \n mit an das Ende der Zeile gepackt wird!
hat dir dieser Artikel gefallen?
