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

时间:2022-07-18 16:13:19

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