首页 > 解决方案 > 在 Java 控制台应用程序中读取光标位置

问题描述

我想确定 Java 控制台应用程序中的光标位置。

这可以通过以下 ANSI 代码序列来实现:

ESC[6n

如果我发送那个 ANSI 转义命令,我会得到答案,但我无法在 Java 中检索它。这是我尝试过的:

public class ConsoleTest {

    public static final String ANSI_GET_CURSOR_POSITION = "\u001B[6n";


    public ConsoleTest() {

        System.out.println(ANSI_GET_CURSOR_POSITION);

        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));   
        String str = null;

        do {   

            try {
                str = obj.readLine();   
                System.out.println(str);
            } catch (IOException ex) {
                Logger.getLogger(ConsoleTest.class.getName()).log(Level.SEVERE, null, ex);
            }
        } while(!str.equals("stop"));           


    }

}

这就是我得到的,即使按 ENTER 也无济于事:

% java -jar ConsoleTest.jar

^[[24;1R

stop               
stop

很明显,控制台用代码回答,但我无法在 Java 应用程序中读取它。

标签: javaconsole-applicationbufferedreaderansi-escape

解决方案


推荐阅读