指定修改某文件夹下N层内所有文件夹的名称
package com.onlineservice.util;
import java.io.File;
public class FixFileNameUtil {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("----开始修改文件名----");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String path = "C:/Users/Administrator.ALSALFQ2SPJHXLS/.gradle/caches/";
fixALLFileName(path, 3);
}
});
thread.start();
}
/**
* 遍历修改文件夹下所有文件名称
* @param fileName
* @param nextCount 修改几层文件夹,必须大于0
*/
public static void fixALLFileName(String fileName,int nextCount){
nextCount--;
File srcFile = new File(fileName);
if(srcFile.isDirectory()){
File[] files = srcFile.listFiles();
for (int i = 0; i < files.length; i++) {
File itemFile = files[i];
System.out.println(""+itemFile.getAbsolutePath());
if(nextCount > 0){
fixALLFileName(itemFile.getAbsolutePath(), nextCount);
}
FixFileName(itemFile.getAbsolutePath(), "new"+(i+1));
System.out.println(i+1+"");
}
System.out.println("修改完成!"+files.length);
}else{
System.out.println("----不是文件夹----");
}
}
/**
* 通过文件路径直接修改文件名
*
* @param filePath 需要修改的文件的完整路径
* @param newFileName 需要修改的文件的名称
* @return
*/
public static String FixFileName(String filePath, String newFileName) {
File f = new File(filePath);
if (!f.exists()) { // 判断原文件是否存在(防止文件名冲突)
return null;
}
newFileName = newFileName.trim();
if ("".equals(newFileName) || newFileName == null) // 文件名不能为空
return null;
String newFilePath = null;
if (f.isDirectory()) { // 判断是否为文件夹 (注意java方法获取的电脑上地址分隔符用\,string设置时用正斜杠/)
newFilePath = filePath.substring(0, filePath.lastIndexOf("\\")) + "\\" + newFileName;
} else {
newFilePath = filePath.substring(0, filePath.lastIndexOf("\\")) + "\\" + newFileName
+ filePath.substring(filePath.lastIndexOf("."));
}
File nf = new File(newFilePath);
try {
f.renameTo(nf); // 修改文件名
} catch (Exception err) {
err.printStackTrace();
return null;
}
return newFilePath;
}
}