残念ながら、これはポータブルな方法では不可能です。
http://forums.sun.com/thread.jspa?threadID=5351637&messageID=10526512
enter
Windowsでは、を使用しない場合でも、System.inからの読み取りはが押されるまでブロックされますBufferedReader
。矢印はコマンド履歴を循環します。自分で試してみてください:
import java.io.*;
public class KeyTest {
public static void main(String[] argv) {
try {
InputStreamReader unbuffered = new InputStreamReader(System.in);
for (int i = 0; i < 10; ++i) {
int x = unbuffered.read();
System.out.println(String.format("%08x", x));
}
} catch (Exception e) {
System.err.println(e);
}
}
}
クラスを使用した同じ問題Console
(Windowsでバッファリングされた入力、Windowsで解釈される矢印キー):
import java.io.*;
public class KeyTest2 {
public static void main(String[] argv) {
try {
Console cons = System.console();
if (cons != null) {
Reader unbuffered = cons.reader();
for (int i = 0; i < 10; ++i ) {
int x = unbuffered.read();
System.out.println(String.format("%08x", x));
}
}
} catch (Exception e) {
System.err.println(e);
}
}
}