文件批量命名
经常要给大量的文件按一定的规则重命名。每次都要一个一个命名,用window自己提供的方法来命名的话很麻烦,后面的数字里还加上了括号,所以今天抽出一点点时间稍微写了下面的这个程序 来批量命名某个文件夹下面的文件。
如:文件夹中有三个图象文件,后缀有png和jpg两种,用下面的程序 可以把它重命名为1.png 2.jpg 3.jpg(后缀名不改)
当然,你稍微改一下下面的程序就可以保留文件名,比较简单,留给读者自己探索。。。
import java.io.File;/** * 重命名某个文件夹下面的文件为1.xxx 、2.xxx 、3.xxx 、………… * @author lingyibin * */public class TestRename {private final static String dir = "F:/Win7/eclipse361/ws/计算机网络Socket/images/头像";private final static String[] ext = {"jpg","png"}; //过滤字符串数组,只有后缀名在这数组里面的才会被重命名/** * @param args */public static void main(String[] args) {work();}private static void work(){File fileDir = new File(dir);if(!fileDir.exists()){javax.swing.JOptionPane.showMessageDialog(null, "找不到文件夹!");}int cntr = 1;String fileName = "",extName = "";if(fileDir.isDirectory()){for(File file:fileDir.listFiles()){if(file.isFile()){fileName = file.getName();int index = fileName.lastIndexOf(".");try{//如果当前文件以数字来命名(符合我想要的规则,那么不再命名它):Integer.parseInt(fileName.substring(0,index));}catch(Exception e){ //如果当前文件不以数字来命名extName = fileName.substring(index+1);if(isFileTypeOk(extName)){ //当前文件类型是 要命名的文件类型//如果文件夹中 不存在以当前数字cntr来命名的文件:while(new File(dir + "/" + cntr + "." + extName).exists()) cntr ++; file.renameTo(new File(dir + "/" + cntr++ + "." + extName));}}}}}}private static boolean isFileTypeOk(String myExt){if(myExt == null) return false;for(String s:ext){if(myExt.equalsIgnoreCase(s))return true;}return false;}}?
?