这两天有个新需求,管理员想down下某文件下所有的文件,但是文件太多,下载速度太慢,所以就从服务器下把所有文件都扒下来了,可是通过程序上传的文件是以时间戳的形式命名的,所以要把时间戳改成相对应的上传人以及文件本身名字显示。但是文件夹下的文件太多,一个个改太麻烦了,所以就自己写了个程序来批量的更改文件名,这是个简单的demo,没有连接数据库,逻辑都是一样的。
public static void main(String[] args) {
//文件存放路径
File file=new File("C:\\Users\\Administrator\\Desktop\\file");
String [] fileName = file.list(); //用于存放文件底下所有子文件名的数组
int beginIndex=0;//截取文件名的时候有用到
int endIndex=0;//截取文件名的时候有用到
String[] studentName=new String[fileName.length];//用于存储提取出来的姓名的数组
String[] FileType=new String[fileName.length];//用于存储提取出来的文件类型
//先提取原文件名中有效的信息
for (int i = 0; i < fileName.length; i++) {
//根据原先的命名格式匹配出想要的信息(具体根据你们自己的情况咯!)
endIndex=fileName[i].lastIndexOf(".");
studentName[i]=fileName[i].substring(beginIndex, endIndex);//这是问价夹下文件名字的的范围
System.out.println(studentName[i]);
FileType[i]=fileName[i].substring(endIndex, fileName[i].length());//这是文件类型的
System.out.println(FileType[i]);
}
// //开始重命名
for(int i=0;i<fileName.length;i++){
//需要改的名字文件
File toBeRenamed = new File("C:\\Users\\Administrator\\Desktop\\file\\"+fileName[i]);
//检查要重命名的文件是否存在
if (!toBeRenamed.exists()) {
System.out.println("File does not exist: "+i);
return;
}
//需要把文件修改成什么名字 以及存放路径
File newFile = new File("C:\\Users\\Administrator\\Desktop\\file1\\测试_"+studentName[i]+FileType[i]);
//修改文件名 这个方法会把原来的文件删除掉,但是改完名字的文件内容是不会变得
if (toBeRenamed.renameTo(newFile)) {
System.out.println("File renamed success!!.");
} else {
System.out.println("Error renmaing file");
}
}
}