昔、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 を使おうなんて思わないだろう。