原文:java批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
源代码下载地址:http://www.zuidaima.com/share/1550463660264448.htm
今天有个需求,想把某个文件夹下所有后缀名为jsp的更改为ftl,本来想用bat实现对bat的高级语法也不太了解,后来发现还需要递归遍历所有的子文件夹,所以用java实现了一个功能一样的代码,有需要的牛人可以下载修改为自己想要的。
这样可以兼容windows和linux。
package com.zuidaima.fileutil;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
**@author www.zuidaima.com
**/
public class BatchRename {
public static void main(String[] args) {
String dir = "c:/jsp/";
File file = new File(dir);
String srcSuffix = "jsp";
String dstSuffix = "ftl";
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);
File dstFile = new File(srcFile.getParent() + "/" + prefix + "."
+ dstSuffix);
if (dstFile.exists()) {// 此处代码注意修改为自己想要的逻辑
srcFile.delete();
continue;
}
srcFile.renameTo(dstFile);
}
}
/**
* 获取指定路径下的所有符合条件的路径
*/
private static List<String> listPath(File path, String acceptSuffix) {
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, acceptSuffix);
list.addAll(_list);
} else {
String name = file.getName();
int idx = name.lastIndexOf(".");
String suffix = name.substring(idx + 1);
if (suffix.equals(acceptSuffix)) {
list.add(file.getAbsolutePath());
}
}
}
return list;
}
}