对文件进行批量重命名

对下载的文件名不太满意,抽取了公共的字符串进行删除后重命名

package com.javaSe.Demo;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 对一个文件夹里的文件进行批量改名。通用的话需要再定制
 *
 * @Name RenameFiles
 * @Author xiaoLi
 * @Date 2023/8/17 星期四 9:18
 */
public class RenameFiles {
    public static void main(String[] args) {
        String folder = "D:\\软件大全\\java资料\\JUC并发编程黑马版";
        int index = 31;
        String delName = "黑马程序员深入学习Java并发编程,JUC并发编程全套教程 - ";
        String path = "D:\\软件大全\\java资料\\JUC2\\";
        // 运行测试一下
        renameAllFile(folder, index, delName, path);
    }

    /**
     * @param folder  要扫描的文件夹,将会对这个文件夹下的所有文件进行改名
     * @param index   从哪个下标开始截取,该下标前面的字符都会被删除
     * @param delName 要删除的字串,判断是否有此子串
     * @param path    新的路径,后面需要自己拼上新的文件名
     */
    private static void renameAllFile(String folder, int index, String delName, String path) {

        File dir = new File(folder);
        List<File> allFileList = new ArrayList<>();

        // 判断文件夹是否存在
        if (!dir.exists()) {
            System.out.println("目录不存在");
            return;
        }
        // 将获取到的文件添加到列表里
        getAllFile(dir, allFileList);
        for (File file : allFileList) {
            String fileName = file.getName();
            if (fileName.length() < index) {
                throw new RuntimeException("文件名长度不足" + index + "位");
            }
            if (fileName.contains(delName)) {
                // 截取前32个字符串
                String newName = fileName.substring(index, fileName.length());
                File file1 = new File(path + newName);
                boolean result = file.renameTo(file1);
                System.out.println(result + "-----" + file1.getName());
            }
        }
    }

    /**
     * 获取一个文件夹下的所有文件
     *
     * @param fileInput
     * @param allFileList
     */
    public static void getAllFile(File fileInput, List<File> allFileList) {
        // 获取文件列表
        File[] fileList = fileInput.listFiles();
        assert fileList != null;
        for (File file : fileList) {
            if (file.isDirectory()) {
                // 递归处理文件夹
                // 如果不想统计子文件夹则可以将下一行注释掉
                getAllFile(file, allFileList);
            } else {
                // 如果是文件则将其加入到文件数组中
                allFileList.add(file);
            }
        }
    }
}
posted @   xiaolifc  阅读(12)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示