進捗バーを表示したい
たくさんある画像ファイルを一気にサイズ縮小したくて、以前プログラムを作りました。
ファイル数が多いと進捗が知りたい。
そこで、プログレスバーを実装してみました。
Java入門にちょうど良いのでは
これ、Javaの勉強し始めた人にちょうどいい題材かな~なんて思いました。
汚いコードで恐縮ですけどご参考に。
抜粋です(詳細は上記GitHubに)
// リサイズ String s1 = "="; int i = 0; double d = 0; String p = ""; // パーセント int p_cnt = 0; // パーセント記号表示個数 for (File file : list) { i++; try { File file_aft = r.execute(file); d = (double)i/file_cnt; p = String.format("%.2f", d * 100); p_cnt = (int)(d * 100) / 10; p_cnt *= 2; // 100%で20個表示 StringBuffer buf = new StringBuffer(); buf.append(p); buf.append("% |"); for (int j = 0; j < 20; j++) { if (j < p_cnt) { buf.append("="); } else { buf.append(" "); } } buf.append("|"); buf.append(Integer.toString(i)); if (i == file_cnt) { buf.append("\n"); } else { buf.append("\r"); } System.out.print(buf.toString()); } catch (IOException e) { e.printStackTrace(); } }
ポイントは"\r"のところです。
改行せず、先頭に戻ってるんですね。
それで進捗バーを表現しています。
追記
100%になるとなんかずれるなぁと思い、修正しました。
String.format("%.2f", d * 100) → String.format("%6.2f", d * 100)
結果、ずれることなく良い感じのバーに。
嬉しいですね。