posts - 88, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java修改stdout的历史输出

Posted on 2016-04-21 17:06 Milo的海域 阅读(407) 评论(0)  编辑  收藏 所属分类: Java
java里如何修改console的历史输出信息呢?如果是当前行的修改可以简单想到"\r"的方案,但是如果要修改上一行呢? google了下原来还是有方法的,需要用到ansi的control sequences
ANSI code

用java写了个简单的例子,例子就是把曾经的output修改为其他字符串并恢复之后的打印,代码里加了sleep,主要方便理解各种控制序列的含义
        //print some test messages
        System.out.println("1");
        Thread.sleep(
1000);
        System.out.println(
"22");
        Thread.sleep(
1000);
        System.out.println(
"333");
        Thread.sleep(
1000);
        System.out.println(
"4444");
        Thread.sleep(
1000);

        
/**
         * modify "333" to "-"
         
*/
        
// Move up two lines
        int count = 2;
        System.out.print(String.format(
"\033[%dA", count));
        Thread.sleep(
1000);
        
// Erase current line content
        System.out.print("\033[2K");
        Thread.sleep(
1000);
        
// update with new content
        System.out.print("-");
        Thread.sleep(
1000);
        
// Move down two lines
        System.out.print(String.format("\033[%dB", count));
        Thread.sleep(
1000);
        
// Move cursor to left beginning
        System.out.print(String.format("\033[D", count));
        
// continue print others
        Thread.sleep(1000);
        System.out.println(
"55555");
        Thread.sleep(
1000);

只有注册用户登录后才能发表评论。


网站导航: