文件的重命名与移动操作

文件的重命名与移动操作


有时候为了对文件进行统一访问与管理,需要把文件进行重命名,并移动到新的文件夹,如何实现呢?
一枚简单的java小程序即可实现:


part_1:需求:我需要把<(E:\BaiduYun\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载)>文件夹下的所有子文件夹下的视频文件重命名,并移动到新的位置<(E:\BaiduYun\张孝祥_Java多线程与并发库)>;


part_2:目录结构如下:
E:\BaiduYun
这里写图片描述

E:\BaiduYun\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载
这里写图片描述

E:\BaiduYun\传智播客张孝祥_Java多线程与并发库高级应用视频教程下载\01传智播客张孝祥传统线程技术回顾
这里写图片描述


part_3:程序源码+注释:

package cn.mike.demo;

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

/**
 * @author Administrator
 * @usage 该程序实现文件的重命名与移动操作;
 */
public class RenameFiles {

    private static File srcFolder;// 源文件夹
    private static File destFolder;// 目的文件夹
    private static List<File> srcFiles;// 存放所有待命名的文件

    static {
        srcFolder = new File("E:\\BaiduYun\\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载");
        destFolder = new File("E:\\BaiduYun\\张孝祥_Java多线程与并发库");
        srcFiles = new ArrayList<File>();
    }

    public static void main(String[] args) {

        // 对文件夹的合法性(是否存在)进行校验
        try {
            checkFolder();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return;
        }

        // 遍历源文件夹把要修改的文件放到集合中
        iterateGetFiles(RenameFiles.srcFolder);

        // 对集合中的元素进行重命名(并移动到目标文件夹)
        iterateRename();

    }// end method-main

    private static void checkFolder() throws FileNotFoundException {
        if (!RenameFiles.srcFolder.exists()) {
            throw new FileNotFoundException("指定的源文件夹不存在.");
        }
        if (!RenameFiles.destFolder.exists()) {
            throw new FileNotFoundException("指定的目标文件夹不存在.");
        }
    }

    private static void iterateRename() {
        String aviName = null;
        String tempStr = null;
        StringBuilder strBuilder = new StringBuilder();
        File tempFile = null;
        String sequenceNumber = null;
        String detailName = null;

        // 遍历list集合,逐个进行重命名
        for (File each : RenameFiles.srcFiles) {
            aviName = each.getName().substring(0, each.getName().length() - 4);// 获取文件名称(除去后缀名".avi")
            tempStr = each.getParent();// 父文件夹的名称

            sequenceNumber = String.format("%02d", Integer.valueOf(aviName));// 两位的序号,不足两位用0补齐,例如:01
            detailName = tempStr.substring(tempStr.lastIndexOf("_") + 1);// 视频文件的详细内容,例如:传统线程互斥技术

            strBuilder.append(sequenceNumber + "_" + detailName + ".avi");
            tempFile = new File(RenameFiles.destFolder, strBuilder.toString());// 新文件的path

            // each.renameTo(tempFile);//核心代码(实现重命名和移动)

            System.out.println(tempFile.toString());// 打印到控制台以便调试
            strBuilder.delete(0, strBuilder.length());// 切记将strBuilder进行清空
        } // end foreach

    }// end method-iterateRename

    private static void iterateGetFiles(File srcFile) {
        // 如果是文件夹,就继续深入遍历
        if (srcFile.isDirectory()) {
            File[] files = srcFile.listFiles();
            for (File each : files) {
                iterateGetFiles(each);
            }
        } else if (srcFile.getAbsolutePath().endsWith(".avi")) {
            // 不是文件夹而且文件格式为avi,就将该文件添加到待命名文件的list集合中
            RenameFiles.srcFiles.add(srcFile);
        }
    }// end method-iterateGetFiles

}// end class-RenameFiles

part_4:重命名及移动后的效果:

E:\BaiduYun\张孝祥_Java多线程与并发库
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值