原文: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; } }