java console press any key_请问在JAVA中怎么实现在控制台下press any key to continue的功能?...
要實現你所說的功能就必須有一個從標準輸入讀取數據時不做任何緩存的方法,
即讀取一個字節后馬上返回的方法(比如視窗平臺上 C/C++ 頭文件 conio.h 里聲明的 getch( ) )。
可惜的是,到目前為止,Java 里沒有這種方法。
就連返回一個字節的 System.in.read( ) 也要等到碰上回車才返回(行緩存,即 line-buffered)。
所以現在你唯一的選擇就是通過本機接口(JNI)調用本機方法(native method)。
步驟有 6 個。以下是裝有 VC6 的視窗平臺上的實現范例:
1)編寫我們的 Java 程序。在程序里,以 native 這個關鍵字為將被調用的本機方法做本機聲明,
并且加載我們將在第 5 步里創建的動態連接庫:
public class PressAnyKeyToContinue {
static native void pause( ); // 本機聲明
public static void main( String[ ] args ) {
System.loadLibrary( "PressAnyKeyToContinue" ); // 加載我們的動態連接庫
pause( ); // 調用本機方法跟調用一般的方法沒兩樣
}
}
2)編譯我們的 Java 程序,以便生成類文件。
3)用 javah.exe 生成對應的 C/C++ 頭文件(PressAnyKeyToContinue.h):命令是 javah PressAnyKeyToContinue 。
4)實現頭文件里聲明的所有方法 / 函數(這例子用 C,所以以下的代碼是在 PressAnyKeyToContinue.c 里):
#include "PressAnyKeyToContinue.h"
JNIEXPORT void JNICALL Java_PressAnyKeyToContinue_pause( JNIEnv * jenv, jclass jc ) {
system( "pause" );
}
5)用編譯器生成動態連接庫:
命令是 cl -Ic:\jdk2\include -Ic:\jdk2\include\win32 -LD PressAnyKeyToContinue.c 。
(當然,假設了 c:\jdk2\ 是 JDK 的路徑。)
6)運行我們的 Java 程序。
總結
以上是生活随笔為你收集整理的java console press any key_请问在JAVA中怎么实现在控制台下press any key to continue的功能?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cookie工具类 java_sprin
- 下一篇: php输出字符unicode码,[PHP