Windows批量重命名判断同名加一(亲测)
package com.CloudDisk.Extend;
import java.io.File;
import java.util.Vector;
public class FileExtend {
/**
* 当前目录所有文件&&文件目录
* @param path 路径
* @return
*/
public static String[] getIFFilename(String path){
File f = new File(path);
File fa[] = f.listFiles();
String[] getFilename = new String[fa.length];
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
getFilename[i] = fs.getName();
}
return getFilename;
}
/**
* 当前目录所有文件
* @param path 路径
* @return
*/
public static Vector getIFFile(String path){
File f = new File(path);
File fa[] = f.listFiles();
Vector getFilename = new Vector();
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (fs.isFile()) {
getFilename.add(fs.getName());
}
}
return getFilename;
}
/**
* 当前目录所有文件目录
* @param path 路径
* @return
*/
public static Vector getIDirectory(String path){
File f = new File(path);
Vector getFilename = new Vector();
File fa[] = f.listFiles();
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (fs.isDirectory()) {
getFilename.add(fs.getName());
}
}
return getFilename;
}
/**
* 批量重命名操作方法(解决同名修改操作)
* @param user 当前目录路径
* @param Xname 修改名称
* @param Yname 要修改的目录&&文件(多个名称)
*/
public static void updatename(String[] Yname,String user,String Xname) {
for(int i = 0;i<Yname.length;i++){
File names = new File(user+Yname[i]);
if(Yname[i].indexOf(".")==-1){
int j = -1;
Yname[i] =Xname;
while(j<0){
Vector<Object> object = getIDirectory(user);
String[] fileone ;
fileone = object.toArray(new String[object.size()]) ;
for (j = 0; j < fileone.length; j++) {
if(fileone[j].equals(Yname[i])){
if(Yname[i].lastIndexOf("(")==-1||!Yname[i].endsWith(")")){
Yname[i] = Yname[i]+"(1)";
j = -1;
break;
}else{
String dirlastname = Yname[i].substring(
Yname[i].lastIndexOf("(") + 1,
Yname[i].lastIndexOf(")"));
int is = 0;
try {
is = Integer.valueOf(dirlastname);
} catch (Exception e) {
is = -1;
}
if(is>=0){
Yname[i] = Yname[i].substring(0,
Yname[i].lastIndexOf("("))+"("+(is+1)+")";
}else{
Yname[i] = Yname[i]+"(1)";
}
j = -1;
break;
}
}
}
if(j>=0){
j=0;
}
}
names.renameTo(new File(user+Yname[i]));
}else{
String dirlasttype = Yname[i].substring(
Yname[i].lastIndexOf("."),
Yname[i].length());
Yname[i] =Xname + dirlasttype;
int ones = 0;
int j = -1;
while(j<0){
Vector<Object> object = getIFFile(user);
String[] fileone ;
fileone = object.toArray(new String[object.size()]) ;
for (j = 0; j < fileone.length; j++) {
if(fileone[j].equals(Yname[i])){
if(Yname[i].substring(0,Yname[i].lastIndexOf(".")).lastIndexOf("(")==-1||!Yname[i].substring(0,Yname[i].lastIndexOf(".")).endsWith(")")){
Yname[i] = Xname+"(1)"+dirlasttype;
j = -1;
break;
}else{
String fileslastname = Yname[i].substring(
Yname[i].lastIndexOf("(") + 1,
Yname[i].lastIndexOf(")"));
int is = 0;
try {
is = Integer.valueOf(fileslastname);
} catch (Exception e) {
is = -1;
}
if(is>=0){
Yname[i] = Yname[i].substring(0,
Yname[i].lastIndexOf("("))+"("+(is+1)+")"+dirlasttype;
}else{
Yname[i] = Xname+"(1)"+dirlasttype;
}
fileone = object.toArray(new String[object.size()]) ;
j = -1;
break;
}
}
}
if(j>=0){
j=0;
}
}
names.renameTo(new File(user+Yname[i]));
}
}
}
public static void main(String[] args) {
String Yname = "11211.txt";
String dirlastname = Yname.substring(
0,
Yname.lastIndexOf("."));
String dirlasttype = Yname.substring(
Yname.lastIndexOf("."),
Yname.length());
System.out.println(dirlastname+"---------"+dirlasttype);
}
}