Javaでたまに使うコードのメモ
すごい久しぶりにJavaを書こうとしたら一瞬具体的なコードがなかなか出てこなくて焦ったので、備忘録としてサンプルをメモ。
自分(jar)内のリソースにアクセスする
こんなかんじで BufferedReader を作って読み込む。
BufferedReader br = null; InputStream is = null; InputStreamReader isr = null; is = this.getClass().getClassLoader().getResourceAsStream("resources/file_in_jar.txt"); isr = new InputStreamReader(is); br = new BufferedReader(isr);
path は、jar内のトップからの相対パス。
たとえば src/jp/co/exmple/hogehoge.java ってやると自分のソースファイルにアクセスできる。(同梱している場合)
シェルコマンド実行して終了を待ってSTDOUTの出力を取得する
こんなかんじで強引に実行する。
これはSTDOUTだけを取る例。
StringBuilder sb = new StringBuilder(); Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(arg, env); InputStream is = process.getInputStream(); // STDOUTだけ InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ( (line = br.readLine()) != null) { sb.append(line).append("\n"); }
デスクトップのキャプチャを取る
Windowsだとこれで良い。
Mac、X-Window-Systemの端末、その他組み込み機器とかだとアクセス可能なディスプレイを配列で取得してそれを指定して云々みたいなのが必要だった記憶がある。(そうしない場合はプライマリのディスプレイから取るので個人で使う程度なら実用上問題ないけど)
Rectangle bounds = new Rectangle(0, 0, 1280, 800); Robot robot = new Robot(); BufferedImage image = robot.createScreenCapture(bounds);
マウスイベントを送ってみる
すっごい雑な例。
Robot robot = new Robot(); // マウスポインタの移動 robot.mouseMove(clickX, clickY); robot.delay(300); // クリック int buttonDownMask = (button == 1) ? InputEvent.BUTTON1_DOWN_MASK : InputEvent.BUTTON2_DOWN_MASK; robot.mousePress(buttonDownMask); robot.delay(100); robot.mouseRelease(buttonDownMask); robot.delay(100);