内存卡MIJIA_RECORD_VIDEO下面有541个文件夹,每个文件夹下面有个多个mp4文件和jpeg文件。

文件夹MIJIA_RECORD_VIDEO下一级使用年月日小时命名,即每小时视频存到一个文件夹。

java代码整理米家摄像机文件(1)批量改名_文件批处理

每个视频名称以分钟M秒S开头。

java代码整理米家摄像机文件(1)批量改名_文件批处理_02

需求

现在想把所有视频合并到一个文件夹,现在的视频名称将会导致排序错乱。决定用视频上级文件夹名称开头,改成下面这样

2020020804_1581127399.mp4

本文介绍文件批量改名,并移到统一文件夹下保存。

代码

public static void main(String[] args) {
        // 提取父文件夹目录(日期),替代原文件文件前缀,放到新目录
        // D:\xiaomi\2020020804\51M46S_1581108706.jpeg
        String s = "D:\\xiaomi\\MIJIA_RECORD_VIDEO";
    	// 改名后统一放到此文件夹
        String tempDir = "D:\\xiaomi\\temp";
        File tempDirfile = new File(tempDir);
        if (!tempDirfile.exists()) {
            FileUtil.mkdir(tempDirfile);
        }

        File pFile = new File(s);
        for (File dayFilename : pFile.listFiles()) {
            String yyyyMMddHH = dayFilename.getName();
            System.out.println("当前处理文件夹:" + yyyyMMddHH);
            for (String mp4File : new File(pFile + File.separator + yyyyMMddHH).list()) {
                System.out.println("当前处理文件:" + mp4File);
                // 改名
                String x = mp4File.split("_")[1];
                String newFileName = yyyyMMddHH + "_" + x;
                System.out.println("新文件名:" + newFileName);
                String mp4FileFullPath = pFile + File.separator + yyyyMMddHH + File.separator + mp4File;
                File rename = FileUtil.rename(new File(mp4FileFullPath), newFileName, true);
                
                // 移动
                FileUtil.move(rename, tempDirfile, true);
                System.out.println("改名后:" + rename);
            }
        }
    }

PS:FileUtil用的是hutool工具类