经常要给大量的文件按一定的规则重命名。每次都要一个一个命名,用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;
}
}