java 批量重命名指定文件夾中所有文件 遞增方式命名 前後綴方式命名

重命名方式主要有兩種方式:
1.前後綴方式命名。

reNameFolder(path,prefix,suffix,srcformat,desformat);

path批處理文件路徑

prefix|前綴添加內容

suffix後綴添加內容

srcformat是否過濾文件的文件格式,null爲不過濾

desformat是否重命名文件的文件格式,null爲保持原有格式

如原來文件名稱:D:/face/life.jpg   重命名後 D:/face/前綴內容life後綴內容.jpg

2.遞增方式命名。

reNameFolder(path,start,offset,prefix,suffix,srcformat,desformat);

path批處理文件路徑

start 開始遞增量

offset 遞增偏移量

prefix|前綴添加內容

suffix後綴添加內容

srcformat是否過濾文件的文件格式,null爲不過濾

desformat是否重命名文件的文件格式,null爲保持原有格式

如原來文件名稱:D:/face/life.jpg   重命名後 D:/face/前綴內容後綴內容1.jpg

3.更多方式重命名

可以根據提供的參數重載多種方法,如遞增時保留原有名稱,遞增時去掉原有名稱,重命名是另開目錄保存等等。





import java.io.File;

/**
 * ========================================
 * <p/>
 * 版 權:dou361 版權所有 (C) 2015
 * <p/>
 * 作 者:陳冠明
 * <p/>
 * 個人網站:http://www.dou361.com
 * <p/>
 * 版 本:1.0
 * <p/>
 * 創建日期:2016/1/13
 * <p/>
 * 描 述:
 * <p/>
 * <p/>
 * 修訂歷史:
 * <p/>
 * ========================================
 */
public class ReNameFolder<span style="font-family: Arial, Helvetica, sans-serif;"> {</span>

    /**
     * @param args
     */

    public static void main(String[] args) {
        System.out.println("---------------------開始操作-------------------");
        reNameFolder(new File("C:\\Users\\Administrator\\Desktop\\Face"), 0, 1, "jjdxm_", "", null, null);
        System.out.println("---------------------操作完成-------------------");

    }


    /**
     * 重命名指定文件夾下的所有文件前後綴方式
     *
     * @param path      路徑
     * @param prefix    前綴
     * @param suffix    後綴
     * @param srcformat 原有格式過濾
     * @param desformat 轉換格式
     */
    private static void reNameFolder(File path, String prefix, String suffix, String srcformat, String desformat) {
        reNameFolder(path, -1, -1, true, prefix, suffix, srcformat, desformat);
    }


    /**
     * 重命名指定文件夾下的所有文件遞增方式
     *
     * @param path      路徑
     * @param start     開始位置
     * @param offset    偏移量
     * @param prefix    前綴
     * @param suffix    後綴
     * @param srcformat 原有格式過濾
     * @param desformat 轉換格式
     */
    private static void reNameFolder(File path, int start, int offset, String prefix, String suffix, String srcformat, String desformat) {
        reNameFolder(path, start, offset, false, prefix, suffix, srcformat, desformat);
    }

    /**
     * 重命名指定文件夾下的所有文件
     *
     * @param path      路徑
     * @param prefix    前綴
     * @param suffix    後綴
     * @param start     起始位置
     * @param offset    偏移量
     * @param srcformat 原有格式過濾
     * @param desformat 轉換格式
     */
    private static void reNameFolder(File path, int start, int offset, boolean saveOldName, String prefix, String suffix, String srcformat, String desformat) {
        if (!path.exists()) {
            return;
        }
        if (prefix == null) {
            prefix = "";
        }
        if (suffix == null) {
            suffix = "";
        }
        /** 當前目錄 */
        File[] files = path.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                reNameFolder(file, start, offset, saveOldName, prefix, suffix, srcformat, desformat);
            } else {
                /** 舊文件名稱,去後綴 */
                String oldName;
                /** 新文件名稱,完整路徑 */
                StringBuilder newName = new StringBuilder();
                /** 新文件後綴 */
                String newfix;
                String fileName = file.getName();
                int index = fileName.lastIndexOf(".");
                /**-------------舊文件名不包含後綴-------------------*/
                if (index == -1) {
                    /** 無後綴文件 */
                    oldName = fileName;
                } else {
                    /** 有後綴文件 */
                    oldName = fileName.substring(0, index);
                }
                /**-------------舊文件名不包含後綴-------------------*/
                /**-------------新文件後綴-------------------*/
                if (desformat == null) {
                    if (index == -1) {
                        newfix = null;
                    } else {
                        newfix = fileName.substring(index + 1);
                    }
                } else {
                    newfix = desformat;
                }
                /**-------------新文件後綴-------------------*/
                newName.append(file.getParent());
                newName.append(File.separator);
                newName.append(prefix);
                if (saveOldName) {
                    newName.append(oldName);
                }
                newName.append(suffix);
                if (start >= 0 && offset > 0) {
                    newName.append(start + "");
                    start = start + offset;
                }
                if (srcformat == null) {
                    /** 沒有加過濾,操作所有文件 */

                    if (newfix != null) {
                        newName.append(".");
                        newName.append(newfix);
                    }
                    File newFile = new File(newName.toString());
                    if (newFile.exists()) {
                        /** 如果重命名的文件已經存在,則不重命名 */
                        System.out.println("rename----oldFile----" + oldName + "----newFile----" + newFile.getName() + "----fails");
                    } else {
                        file.renameTo(newFile);
                    }
                } else if (file.getName().endsWith("." + srcformat)) {
                    /** 有加過濾,操作過濾文件 */
                    newName.append(".");
                    newName.append(newfix);
                    File newFile = new File(newName.toString());
                    if (newFile.exists()) {
                        /** 如果重命名的文件已經存在,則不重命名 */
                        System.out.println("rename----oldFile----" + oldName + "----newFile----" + newFile.getName() + "----fails");
                    } else {
                        file.renameTo(newFile);
                    }
                }
            }
        }
    }

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章