列出某目录下的所有文件,将文件改名,借助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