java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码

来源:互联网 发布:linux设置终端输出 编辑:程序博客网 时间:2024/05/16 09:44

                                              java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码


作者:Vashon

package com.ywx.batchrename;import java.io.File;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * java批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码 * @author yangwenxue(vashon) * */public class BatchRename {public static void main(String args[]){String dir="f:"+File.separator+"java";File file=new File(dir);String srcSuffix="class";String dstSuffix="java";List<String> paths=listPath(file,srcSuffix);for(String path : paths){File srcFile=new File(path);String name=srcFile.getName();int idx=name.lastIndexOf(".");String prefix=name.substring(0, idx);System.out.println(srcFile.getParent());File dstFile=new File(srcFile.getParent()+"/"+prefix+"."+dstSuffix);if(dstFile.exists()){srcFile.delete();continue;}srcFile.renameTo(dstFile);}}/** * 获取指定路径下的所有符合条件的路径 * @param file 路径 * @param srcSuffix 后缀名 * @return */private static List<String> listPath(File path, String srcSuffix) {List<String> list=new ArrayList<String>();File[] files=path.listFiles();Arrays.sort(files);for(File file : files){if(file.isDirectory()){//如果是目录//关键是理解以下两步操作(递归判断下级目录)List<String> _list= listPath(file, srcSuffix);//递归调用list.addAll(_list);//将集合添加到集合中}else{//不是目录String name=file.getName();int idx=name.lastIndexOf(".");String suffix=name.substring(idx+1);if(suffix.equals(srcSuffix)){list.add(file.getAbsolutePath());//把文件的决定路径添加到集合中}}}return list;}}
注:此代码案例关键部分是递归部分。

0 0
原创粉丝点击