列出某目录下的所有文件,将文件改名,借助java.io.File一个类就可以完成。大家可以发现,代码中的具体方法都是File一个类的。

另外要注意的是,File的全路径名,路径是一致的,父路径其实是文件所在的目录名,名称则是单独的文件名,具体如下:

File.getAbsolutePath());// 全路径文件名

File.getPath());// 全路径文件名,和getAbsolutePath一致

File.getParent());// 单纯路径

File.getName());// 单纯文件名

这个在刚接触时容易混淆,需要小心。

源码:

package com.hy.expired;

import java.io.File;

import org.apache.log4j.Logger;

/**
 * 将folder指定目录下的JPG文件批量改名
 * @author horn1
 *
 */
public class BatchRenamer {
    private static Logger log = Logger.getLogger(BatchRenamer.class);
    
    public static void main(String[] args) {
        addPrefix2EveryFile();
    }
    
    /**
     * 将全部jpg文件按数字改名
     */
    private static void renameToNumber() {
        File folder = new File("D:\\temp");
        File[] files = folder.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile() && files[i].getName().endsWith(".jpg")) {
                String oldFilename=files[i].getAbsolutePath();
                String newFileName=files[i].getParent()+File.separator+""+i+".jpg";

                files[i].renameTo(new File(newFileName));
                log.info("文件已从原名:'"+oldFilename+"' 修改成了新名:'"+newFileName+"'.");
            }
        }
    }
执行效果:
/** * 给每个文件名加上前缀 */ private static void addPrefix2EveryFile() { File folder = new File("D:\\temp"); File[] files = folder.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile() && files[i].getName().endsWith(".jpg")) { String oldFilename=files[i].getAbsolutePath(); String newFileName=files[i].getParent()+File.separator+"冬月枫"+files[i].getName(); files[i].renameTo(new File(newFileName)); log.info("文件已从原名:'"+oldFilename+"' 修改成了新名:'"+newFileName+"'."); } } }

执行效果:
}

--END-- 2019年11月3日09:40:04