指定修改某文件夾下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;
}
}