Java工具类_01——Java实现批量重命名文件

笔者在进行java期末复习时,一边复习理论知识的同时,一边进行程序编写实践,在这个过程中摸索着写出了很多方便自己使用的工具类,故将其记录在此,方便以后查阅、更改、提升等。望对诸位读者有所益。

优点:1.能够批量重命名文件;2.重命名的文件有序号,方便排序;3.实现方法简单易懂,代码可读性高,便于使用者根据个人实际情况修改;4.能重命名文件夹以及各种类型的文件......

缺点:1.当文件需要以各种不同的名字命名时,该工具类不能实现;2.获取文件的方式是随机的,对于原本已经是按顺序排序的文件不友好;3.重命名样式单一......

完整代码实现如下:

package com.sxz.Util;

import java.io.File;
import java.io.FilenameFilter;

/**
 *      文件批处理工具包
 * @author shixingzhou
 * @school 东北大学
 * @creat 2023.02.09
 * @since 1.0.0
 */
public class fileUtil {
    /**
     *  设置想要获取文件类型(即设置需要的文件后缀)
     */
    static class fileAccept implements FilenameFilter{
        String str;
        fileAccept(String s){
            str = "." + s;
        }

        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(str);
        }
    }

    /**
     *      获取所给目录下指定文件类型的文件
     * @param filePath
     * @param fileType
     * @return
     */
    public File[] getFile(String filePath,String fileType){
        //1.创建File对象,获取图片文件所在目录
        File dir = new File(filePath);

        //2.获取目录下的图片文件
        //2.1 匹配后缀为.###的文件
        fileAccept accept = new fileAccept(fileType);
        //2.2 获取匹配的文件,返回数组中
        File[] fileNames = dir.listFiles(accept);
        return fileNames;
    }

    /**
     *      批量重命名文件
     * @param files
     * @param newFilePath
     * @param newName
     * @param fileType
     */
    public void multiplyRenameFile(File[] files, String newFilePath, String newName, String fileType){
        if (files != null) {
            for (int i=0;i<files.length;i++) {
                //需要改的名字文件
                File toBeRenamed = new File(String.valueOf(files[i]));

                //检查要重命名的文件是否存在
                if (!toBeRenamed.exists()) {
                    System.out.println("File not exists? "+!toBeRenamed.exists());
                    return;
                }
                //需要把文件修改成什么名字 以及存放路径
                File newFile = new File(newFilePath +newName+i+"."+fileType);
                //修改文件名 这个方法会把原来的文件删除掉,但是改完名字的文件内容是不会变得
                if (toBeRenamed.renameTo(newFile)) {
                    System.out.println("Files renamed success!");
                } else {
                    System.out.println("Error renaming files!\n" + "index:" + i);
                }

            }
        }
    }

    /**
     *   测试
     * @param args
     */
    public static void main(String[] args) {
        fileUtil f = new fileUtil();
        String filePath = "D:\\imagesvideos\\imgs\\JMQ";
        String newFilePath = "D:\\imagesvideos\\imgs\\JMQ\\";//注意这个路径最后的\\不可省,否则重命名的文件将会被移动到上一层目录
        String fileType = "jpg";
        String newNames = "JMQ_";
        File[] fileNames = f.getFile(filePath,fileType);
        f.multiplyRenameFile(fileNames,newFilePath,newNames,fileType);
    }
}

运行效果展示

重命名前:

重命名后:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于自己经常利用浏览器插件下载网页图片,由此产生很多的文件夹和文件,这些文件夹的名字多半是网页的title,导致文件夹名很长,文件名多是些很长的数。感觉这样的状况不是很好就自己用java实现了简单的shell来管理这些自动下载的批量文件产生的文件夹和文件! 使用注意事项: 该程序默认的工作路径是c:\盘,建议在windows环境下利用这则小程序,linux下未测试。 这个简单的java shell拥有以下几个命令: cd 进入要工作的目录 ls 列出该工作目录下的文件文件夹 re 对工作目录下的文件夹名或文件名进行改名操作 man 对具体的命令的详细帮助文档 pwd 显示当前工作的目录 history 显示已经输入的历史命令 help 调取帮助文档命令 exit 退出当前的程序 其中re修改文件以及文件夹名的命令是这个程序的价值体现。 re/cd/ls/man这四个命令拥有命令选项,在使用命令选项的规则统一是:xx-uuff其中xx代表命令,-代表分隔符是必须的,uu代表命令选项,ff代表具体需求的字符。 pwd/history/help/exit是单个输入的命令,没有命令选项。 利用这样的命令:man-cd就可以查看cd命令使用的具体介绍,其中-是必须的,其它带有命令选项的都可以通过这种方式查看命令帮助文档。 例如输入:man-re就会列出以下信息 对当前工作目录下的文件夹名和文件名进行改动的命令: re -j@#将目录下所有的文件夹名字中@#间(包括@#)内容去掉 re -q@将目录下所有文件夹名中@后(包括@)的内容去掉 re -h@将目录下所有文件夹名中@前(包括@)的内容去掉 re -k@将目录下所有文件名中的@去掉,当@为.时表示去掉名字中的空格(特注) re -m@#$将目录下所有文件名中的@#$去掉,这是去掉名字中多个字符的命令 re -r@#将目录下所有文件名中的@用#替换掉 re -s@#$%将目录下所有文件名中的@用#替换,$用%替换,这是替换名字中多个字符的命令 re -f+前面七个命令的命令选项的话就是对该工作目录下的所有文件文件名起相应作用(小心使用)! re -fh.ppp.xxx将目录下所有符合条件的文件文件名的后缀ppp改成xxx!(较复杂,还未实现) re -fa将当前工作目录下的所有文件名按数字递增方式命!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值