Tworzę małą aplikację Java, która powinna mieć wskaźnik postępu z procentami. W każdej pętli używa Backspace, \b
aby usunąć wyświetlany postęp przed wyświetleniem następnego procentu.
Oto uproszczony przykład:
public static void main(String[] args) throws Exception {
System.out.print("Progress: ");
for (int percentage = 0; percentage < 100; percentage++) {
System.out.print(percentage + "%");
Thread.sleep(10); // Stub for "long running task".
int length = String.valueOf(percentage).length() + 1;
while (length-- > 0) {
System.out.print('\b');
}
}
System.out.println("finished!");
}
Działa to doskonale w wierszu poleceń, ale znak backspace nie jest rozpoznawany w konsoli Eclipse (kompilacja Galileo 20090920-1017). Zamiast tego wyświetla pusty kwadrat oznaczający nieznany znak. Zobacz zrzut ekranu:
Jak sprawić, aby Eclipse prawidłowo „wyświetlał” backspace? To znaczy niech usunie poprzedni znak.
W rzeczywistości nie jest to showstopper, ponieważ zostanie uruchomiony w konsoli poleceń, ale byłoby miło, gdyby działał również w Eclipse :)
Odpowiedzi:
Błąd Eclipse # 76936. Nie liczyłbym na to, że to naprawią, i nie ma na liście obejść.
Możesz mieć szczęście w znalezieniu wtyczki, która wnosi wkład w bardziej zaawansowaną konsolę.
źródło
Cóż, to prawda, że nie możesz użyć klawisza Backspace \ b do usunięcia wyświetlanego postępu, ale możesz go usunąć, czyszcząc konsolę pętlą wywołującą println. Oczywiście ten kluge nie wyczyści Twojego pliku dziennika!
źródło
Naprawiono, Eclipse Mars.
Uwaga, nie użyłbym go do ciągłej aktualizacji, ponieważ konsola eclipse jest opóźniona.
źródło
System.out.println("x\by")
).Teraz to naprawili, ale jest domyślnie wyłączony. Powinieneś to włączyć
Interpret ASCII control characters
w preferencjach konsoli.źródło
użyj: System.out.print ("\ b") wewnątrz pętli while zamiast System.out.print ('\ b');
źródło