首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 批量重命名工具類:正則替換與目錄遞歸實現

     編輯:Java 綜合教學

場景

下載的劇集/文件名包含網站水印、亂碼前綴(如 `https://xxx_第1集.mp4`),需批量清洗為規範名稱(`甄嬛傳_第1集.mp4`)。

核心代碼

package gaiming;

import java.io.File;
import java.util.Scanner;

public class GaiMing {
    public void gai() {
        System.out.println("請輸入目標目錄路徑:");
        Scanner input = new Scanner(System.in);
        File dir = new File(input.nextLine());

        File[] files = dir.listFiles();
        if (files == null) {
            System.out.println("目錄為空或不存在");
            return;
        }

        System.out.println("請輸入要替換的公共字符(如水印前綴):");
        String oldStr = input.nextLine();
        System.out.println("請輸入替換後的字符(如劇名):");
        String newStr = input.nextLine();

        int count = 0;
        for (File file : files) {
            String path = file.getAbsolutePath();
            if (path.contains(oldStr)) {
                String newPath = path.replace(oldStr, newStr);
                File newFile = new File(newPath);
                if (file.renameTo(newFile)) {
                    System.out.println("重命名:" + file.getName() + " → " + newFile.getName());
                    count++;
                } else {
                    System.err.println("失敗:" + file.getName() + "(可能目標已存在或無權限)");
                }
            }
        }
        System.out.println("完成,共重命名 " + count + " 個文件。");
    }

    public static void main(String[] args) {
        new GaiMing().gai();
    }
}

功能特點

  • **交互式輸入**:目錄路徑、舊字符、新字符
  • **精確匹配替換**:`String.contains()` + `replace()`,避免誤傷
  • **安全檢查**:`renameTo` 返回 boolean,失敗不拋異常但記錄日誌
  • **無遞歸**:僅處理一級目錄,子目錄需遞歸擴展

進階擴展方向

需求實現思路
正則表達式替換`path.replaceAll(regex, replacement)`
遞歸處理子目錄`Files.walkFileTree()` 或遞歸 `listFiles()`
預覽模式先收集重命名映射表,確認後再執行
撤銷功能記錄操作日誌(原名→新名),支持回滾
圖形界面Swing/JavaFX 拖拽目錄、預覽列表、一鍵執行

使用示例

請輸入目標目錄路徑:
D:\Downloads\ZhenHuan
請輸入要替換的公共字符:
https://isoivjsvlkfdjorwiu pijklsjvgoij ;lkjioju
請輸入替換後的字符:
甄嬛傳
重命名:https://isoivjsvlkfdjorwiu pijklsjvgoij ;lkjioju第1集.mp4 → 甄嬛傳第1集.mp4
重命名:https://isoivjsvlkfdjorwiu pijklsjvgoij ;lkjioju第2集.mp4 → 甄嬛傳第2集.mp4
...
完成,共重命名 72 個文件。

避坑提示

  • Windows 路徑分隔符 `\` 需轉義或用 `/`
  • 文件名包含特殊字符(`\` `/` `:` `*` `?` `"` `<` `>` `|`)會導致 `renameTo` 失敗
  • 目標文件已存在時 `renameTo` 返回 false,建議先檢查或加序號區分
  • 大量文件操作建議先備份目錄
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved