キー入力プログラム

昔、Java でキー入力するのに、こんなコードを書いた。。。

public final static String getKeyin(String prompt) throws IOException{
   int iCount;
   String rtn = "";
   char cStr[] = new char[256];
   InputStream inputStream=System.in;
   System.out.print(prompt);
   InputStreamReader reader=new InputStreamReader(inputStream);
   iCount=reader.read(cStr, 0, 255);
   StringBuffer sb = new StringBuffer();
   for(int i=0;i < iCount;i++){
      if (cStr[i] >= 0x20) sb.append(cStr[i]);
   }
   rtn=sb.toString();
   return rtn;
}

でも、java.util.Scanner を使えば、、

try(Scanner keyscan = new Scanner(System.in)){
   String str = keyscan.nextLine();
   System.out.println(str);
}

例外捕捉を書かなくても済む。
Scanner は、useDelimiter メソッドなど、正規表現での解析が目的なのだが、
System.in を渡せば上のようにも使えるし、単純にテキストファイルを読むのも。。

try(Scanner scan = new Scanner(new File("/var/report.properties"))){
   while(scan.hasNextLine()){
      String str = scan.nextLine();
      System.out.println(str);
   }
}catch(IOException e){
   e.printStackTrace();
}

とも、書ける。単にテキストファイル読込みに Scanner を使おうなんて思わないだろう。