【java】java实现文件批量重命名

package com.msmiles.fileutil;

import java.io.File;

public class RenameFile {

	public static void main(String[] args) throws Exception {

		// 文件路径
		String filePath = "D:\\temp";

		// 新文件前缀
		String prefix = "";

		// 分隔符
		String separator = "_";
		// 阀值,序号起点
		int step = 0;

		// 重命名
		renameFile(filePath, prefix, separator, step, true);
	}

	/***
	 * 文件批量重命名
	 * 
	 * @param filePath
	 *            文件目录
	 * @param prefix
	 *            新文件前缀
	 * @param separator
	 *            分隔符
	 * @param step
	 *            阀值,序号起点
	 * @param useSerialNum
	 *            是否使用序号。true-使用;false-不使用
	 */
	public static void renameFile(String filePath, String prefix,
			String separator, int step, boolean useSerialNum) {

		

		// 文件后缀
		String suffix = null;


		// 文件名
		String name = null;

		// 文件的绝对路径
		String path = null;

		File fin = new File(filePath);

		if (!fin.isDirectory()) {
			System.out.println("你输入的不是一个目录!");
		}

		// 获取文件列表
		File[] subF = fin.listFiles();

		for (int i = 0; i < subF.length; i++) {
			if (subF[i].isFile()) {
				// System.out.println(subF[i].getName() + " " +
				// subF[i].length()); // 列出目录下所以文件

				// 获取文件名(包括扩展名)
				name = subF[i].getName();
				String[] block = name.split("\\.");// 根据.分割符进行分割,这样获取的的是扩展名
				suffix = block[block.length - 1]; // 得到扩展名

				if (null != separator) {// 如果分隔符不为null,对文件名进行分割,获取最后部分
					suffix = "";
					block = name.split(separator);
					// suffix = block[0]; // 得到新文件的文件名
					suffix += block[block.length - 1]; // 得到新文件的文件名
				}

				// 获取文件绝对路径
				path = fin.getAbsolutePath();
				String[] block2 = path.split("\\\\");
				String realPath = block2[0];
				for (int j = 1; j < block2.length; j++) {
					System.out.println(block2[j]);
					realPath = realPath + "\\\\" + block2[j]; // 得到绝对路径字符串,对\进行了处理

				}

				int k = i + 1 + step;
				File reFile = null;
				if (useSerialNum) {
					reFile = new File(realPath + "\\\\" + prefix + k + "_"
							+ suffix);
				} else {
					reFile = new File(realPath + "\\\\" + prefix + suffix);
				}
				subF[i].renameTo(reFile); // 重命名执行进行时
			}
		}
	}

}

 

你可能感兴趣的:(java)