今からはじめるプログラミング35
バッチプログラム。
おそらくコンピュータさんは
とても得意な処理だと思います。
前回
今からはじめるプログラミング34 - yo2an’s blog
の顔作成ですが、
NFTでうれているのは1万もの自動作成されたアイコン?スタンプ?なので、
これはもはやバッチ処理を実装するしかない、という感じだと思うので、
画面に以下のような項目を追加して、実装してみた。
・追加項目:回数を指定するテキストフィールド
バッチ実行のボタン
画面イメージは以下のようになりました。
顔が大きすぎて項目がわかりづらい・・・。
そして対応する処理を追加します。
フレームにアクションリスナーを追加した上で、リスナーのメソッドに追加しました。
--------------------------------------------------------------------
//画面からの入力値
String strNum = this.txtNum.getText();
//数値に変換
int num = Integer.parseInt(strNum);
//ファイルに上書きされても意味がないのでループした回数みたいなのをファイル名につけて一意にする
String fileName = "./resize_out.png";
File defltFile = new File(fileName);
//if文意味がないかも
if(defltFile.exists()) {
//画面の回数分ファイル名を変えながら顔作成を実行
for(int i =0;i<num;i++) {
String newFileName = i + "_"+ defltFile.getName();
defltFile.renameTo(new File("./"+newFileName));
new CreateFace();
}
}
-----------------------------------------------
処理としては、すでにあるファイルをリネームして、顔作成を呼ぶようにして、上書きを回避すると、結果的に複数の実行結果ファイルを生成しているよ〜。という感じです。
普通はあまりこういうコーディングはしないです。
どちらかというと、ファイル名に、「インクリメント」した数値を「サフィックス」として追加するほうが一般的ですかね?僕はいきあたりばったりなので、こういうプログラミングしてしまいます。
というか拡張子を「トリム」して、インクリメントした数値をつけて、そのあとにまた拡張子を追加するのがめんどくさかった。
って感じでプログラムしてしまいました。
まだ完成はしていませんが、これでまとめて処理する機能は実装できたので、かなり満足しています。
本当なら入力値のチェック、エラー処理などを追加するべきですが。。。
とりあえずの目的(大量のアイコン画像を簡単に作成する)は達成できそうなので、OKでしょう!
javaではないですが、ファイル操作のいろいろがわかる本のリンクです。