开发者

How to get backspace \b to work in Eclipse's console?

开发者 https://www.devze.com 2023-01-04 04:17 出处:网络
I\'m creating a little Java application which should have a progress indicator with percentages. In every loop it uses backspace \\b to remove the displayed progress before displaying the next percent

I'm creating a little Java application which should have a progress indicator with percentages. In every loop it uses backspace \b to remove the displayed progress before displaying the next percentage.

Here's a simplified example:

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');
        }
    }开发者_JAVA百科
    System.out.println("finished!");
}

This works perfectly in command prompt, but the backspace character isn't recognized in Eclipse's console (Galileo build 20090920-1017). It instead displays an empty square denoting an unknown character. See screenshot:

How to get backspace \b to work in Eclipse's console?

How do I get Eclipse to "display" the backspace properly? I.e. let it remove the previous character.

This is actually no showstopper since it will just be run in command console, but it would be just nice to get it to work in Eclipse as well :)


Eclipse Bug #76936. I wouldn't count on them to fix it, and there are no workarounds listed.

You might have luck finding a plugin that contributes a more advanced console.


Well, it's true you can't use backspace \b to remove the displayed progress, but you could remove it by clearing the console with a loop calling println. Of course this kluge won't clear your log file!


Now they fixed it, but it's disabled by default. You should enable it via Interpret ASCII control characters in console preferences.


Fixed, Eclipse Mars.

Note, I wouldn't use it to do constant updating, as the eclipse console lags.


use: System.out.print("\b ") inside the while loop, instead of System.out.print('\b');

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号