【Java】指定ディレクトリ内の画像ファイルを全てリネーム

タイトル通り。

Java書き始めてまだ1ヶ月弱なので大分冗長な感じ。
後でクラス化やら整理します。。。

import java.io.File;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class StartUp {

    public static void main(String[] args) throws InterruptedException {

        try {

            String pathStr = "/Users/{*ユーザー名}/Desktop";
            String dirStr  = "{*ディレクトリ名}";
            System.out.println(pathStr + dirStr + " 内の画像ファイルをリネームします。。\n");

            //リネームするディレクトリの指定
            File directory1 = new File(pathStr , dirStr);

            //上記がディレクトリである場合
            if (directory1.isDirectory()) {

                int cnt = 0;
                String[] imgExtentionArray = {
                                                "bmp" ,
                                                "gif" ,
                                                "png" ,
                                                "jpg" ,
                                                "jpeg"
                                            };

                //ディレクトリ内のファイル名の一覧をFileオブジェクトで取得
                File[] fileArray = directory1.listFiles();

                for (int i = 0; i < fileArray.length; i++) {
                    String cntStr       = null;
                    String renameStr    = null;
                    String extensionStr = null;
                    boolean isImgFlag   = false;    //画像判別用フラグ

                    //フルパスを取得、String型に変換
                    String fullpath = String.valueOf(fileArray[i]);

                    //ファイル名を取得、String型に変換
                    String name = String.valueOf(fileArray[i].getName());

                    //ディレクトリの場合
                    if (fileArray[i].isDirectory()) {
                        System.out.println(name + "はディレクトリです。\n");
                        continue;
                    }

                    //拡張子の取得
                    int lastDotPosition = name.lastIndexOf(".");
                    if (lastDotPosition != -1) {
                        extensionStr = name.substring(lastDotPosition + 1);
                    }

                    //ファイル形式のチェック
                    for(int j = 0; j < imgExtentionArray.length; j++){
                        if (extensionStr.equals(imgExtentionArray[j])) {
                            isImgFlag = true;
                            break;
                        }
                    }

                    //ファイルが画像でなかった場合
                    if (isImgFlag == false) {
                        System.out.println(name + " は画像ではない形式です。\n");
                        continue;
                    }

                    //リネームするファイル名を作る
                    //	=> 「 rnm + 連番 + ランダム値(6桁) + .拡張子 」
                    
                    cnt++;
                    //連番の整形
                    if (cnt < 10) {
                        cntStr = "0" + Integer.toString(cnt) + "_";
                    } else {
                        cntStr = Integer.toString(cnt) + "_";
                    }

                    //ランダム値(6桁)の生成
                    Random rnd = new Random();
                    int ran    = rnd.nextInt(899999) + 100000;

                    //それぞれの文字列を結合、リネーム後のファイル名を作成
                    renameStr = "rnm_" + cntStr + ran + "." + extensionStr;
                    
                    //フルパスからファイル名を検索
                    //	=>  ファイル名を置き換え

                    //Patternオブジェクトの作成
                    Pattern p = Pattern.compile(name);

                    //Matcherオブジェクトの作成
                    Matcher m = p.matcher(fullpath);

                    //ファイル名を置き換えたフルパスの文字列を作成
                    String renameFullPath = m.replaceFirst(renameStr);

                    //renameTo() にて実際にファイル名の書き換えを行う
                    fileArray[i].renameTo(new File (renameFullPath));
                    System.out.println(name + " のリネーム完了... \n" + renameStr + "\n");
                }
                System.out.println(" - - - - 処理完了 - - - - ");

            } else {
                System.out.println("ディレクトリを指定してください。");
            }

        } catch (Exception e) {}
    }
}


【macbookair】容量を食うsleepimageの削除

disk inventory Xなどでチェックすると、
「sleepimage」というファイル群が結構な容量を食ってた。

これは、スリープ中にバッテリが切れた際のRAMのバックアップファイルのようで、
自分の用途にはあまり必要ではなさそうなので削除してみる。

sudo rm /private/var/vm/sleepimage

ちなみにsleepimageを作らないようにも設定可能。

sudo pmset -a hibernatemode 0
(このへん参考にしました)