用java程序将图片更名

在D盘下有2021文件夹,在此文件夹里面含有文件和文件夹,将2021文件夹里面所有.jpg格式文件,按照序号全部更名为zhang001.jpg、zhang002.jpg、…等。


public class FileRenamer {
    
    public static int index = 0;
    
    public static void main(String[] args) {    
        String filepath = "D:/DragonFile/rename";
        File src = new File(filepath);
        
        /*使用循环处理
         * 
         * 主要思路:首先对指定目录中的文件进行过滤,获取是文件,且扩展名为 .jpg的文件,
         * 然后对这些符号条件的文件进行特定的重命名操作。
         * */
        
        new FileRenamer().batchFileRename(src);
        System.out.println("执行完毕!");
    }
    
    public void batchFileRename(File file) {
        if (file.isFile() && file.getName().contains(".jpeg")) {
            File dest = new File(file.getParent(), "zhang" + String.format("%03d.jpg", index++));
            file.renameTo(dest);
        } else if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File f : files) {
                batchFileRename(f);
            }
        }
    }
    
}

专门给你写了一个程序(已经本地验证了),我来简述一下作用。
指定一个源目录,然后它会递归访问该目录下的所有文件和文件夹,对于文件,它会判断是否是 .jpg 结尾的文件;
对于目录,它会获取 该目录下所有的文件(文件和文件夹),然后执行上述同样的操作。但是不确定你这里的序号是什么,所以这里用了要给全局变量来记录文件的序号(这是我遍历的序号,可能不是你想要的)。如果你想要更加定制化的操作,可以再详细描述(认同了回答才行哦)。
这里需要注意一点,一般情况下不建议使用 File 类下 renameTo 方法,该方法会将源文件转为目标文件(所以它的实质是文件移动!),所以如果命名之后你的源文件就没了(原来的命名就丢失了),所以建议你可以先备份源文件,再执行该代码。或者你应该考虑使用文件复制操作,如果想要的话,也可以定制。

使用File对象,读取文件夹对应的路径的文件,使用renameTo方法重命名文件,举例:

File file1=new File("D:/test/a.txt");  
2 File file2=new File("D:/test/b.txt");  
3 boolean flag = file1.renameTo(file2);


import java.io.File;

/**
 * 文件重新命名
 */
public class FileRename {

    private static String PATH = "E:\\demo";

    private static String DEL_SUBSTRING = "jpg";

    public static void main(String[] args) {
        boolean b = rename(PATH);
        System.out.println("result=" + b);
    }

    /**
     * 传入一个文件夹路径,修改该路径下所有符合条件的文件名称
     * @param path
     * @return
     */
    public static boolean rename(String path){

        File dir = new File(path);
        File[] files = dir.listFiles();

        //遍历文件数组
        for (File file: files) {
            String fileName = file.getName();
            //是否是文件
            if(file.isFile()){
                //是否包含需要删除的字符串
                int i;
                if((i = fileName.indexOf(DEL_SUBSTRING)) != -1){
                    //更改文件名
                    String newName = file.getParent() + File.separator +
                            fileName.substring(0,i) + fileName.substring(i+DEL_SUBSTRING.length());
                    System.out.println("newName="+newName);
                    file.renameTo(new File(newName));
                }
            //是否是文件夹
            }else if (file.isDirectory()){
                //对当前文件夹进行迭代
                rename(file.getAbsolutePath());
            }
        }
        return true;
    }
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632