`
lingyibin
  • 浏览: 191150 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

文件批量命名

    博客分类:
  • Java
阅读更多

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

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics