Java控制台清屏

來源:互聯網
上載者:User

看到網上有人討論Java如何?對控制台清屏,看到的內容不是很理想。所以把這些內容總結一下。

直觀一點,先看下代碼吧

 

import static java.lang.System.out;
/**
 * Build by netbeans
 * @author Felix Wu
 */
public class ConsleRewriteTest {
    public static void main(String[] agrs) {
        out.print(          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa" );
        pause();
        out.print( "/r" + "                                                         " );
       
        int total = 100;
        for( int i=1; i<total; i++ ) {
            pause();
            out.print( "/r" + i + "/"+total  );
        }
    }

    private static void pause() {
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            //Swallow this exception
        }
    }
}

 

嚴格上說控制台是Java進程的輸出裝置。在Java中對應System.out流,對這個流而言你只能向其中輸入內容。那麼Java程式怎麼和他控制台通訊呢?

方式一:通過ASCII碼的控制字元'/r'.

            '/r'表示斷行符號,就回到行首。'/n'表示換行,即移到下一行(游標垂直下移,如果游標在原行的第n個字元位置,那麼就下移到下一行的第n個字元位置)。那麼"/r/n"表示斷行符號換行,即移到下一行的行首。

            注意上面對'/r'和'/n'的解釋是ASCII碼標準含義。但是不同的軟體對'/n'解釋不盡相同。比如按照ASCII碼的標準解釋斷行符號換行是"/r/n",而UNIX為了節約儲存空間,其API在儲存採用ASCII編碼的文本時用'/n'替代"/r/n",相應的在讀取顯示時'/n'效果等效於"/r/n"。簡而言之,在UNIX的API中'/n'的意思是斷行符號換行("/r/n")而不是標準的換行。JVM也採用了這個風格。但是在Windows系統中其API採用了'/n'的標準本意。對'/n'的不同解釋,造成了同樣的文本在不同的軟體中的顯示效果不相同。

 

方式二:和輸出裝置通訊.

            這個方式我沒有嘗試過,不過用JNI可以實現。輸出裝置可能是軟體(比如常見的控制台視窗),也可能是硬體。如果是軟體的話,Java程式和此軟體通訊,讓其清屏(提供此功能的情況下)。如果是硬體可以和驅動通訊讓其清屏(提供此功能的情況下)。

 

對應上面給的例子,不要直接在NB6.8中運行,因為NB6.8的控制台沒有解析'/r'控制字元,這應該是其一個bug。在window上可以直接在cmd中運行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.