java实现文件重命名
背景
我们经常在网上下载一些视频教程,然而这些视频命名规则各不相同,即使对于相同类型的文件名来说,当文件数量很大且文件名全部是中文时,文件排序是非规则的,因此本篇博客主要讲解一种改变文件夹名称使得文件按照规律进行排序。
思路
根据文件名对文件进行排序,然后重命名文件即可。
代码
规则:如将文件名中带有“第八讲”替换成“8”:
构建排序规则
/***
*@paramfilePath文件夹位置
*@paramstartWorld开始替换的字
*@paramendWorld结束替换的字
*/
privatevoidReName(StringfilePath,StringstartWorld,StringendWorld){
Filefile=newFile(filePath);
if(!file.exists()||!file.isDirectory()){
System.out.println("文件不存在");
return;
}
String[]list=file.list();
//以第xxx讲-文件全名的键值对存储文件
HashMappaths=newHashMap();
for(Stringstr:list){
intstart=str.indexOf(startWorld)+1;
intend=str.indexOf(endWorld);
if(start!=0&&end!=-1){
paths.put(str.substring(start,end),str);
}else{
System.out.println("文件"+str+"不满足替换条件");
}
}
//对文件名进行排序
orderPath(filePath,endWorld,paths);
}
排序
privatevoidorderPath(StringfilePath,StringendWorld, HashMappaths){ if(paths.isEmpty()){ return; } TreeMap map=newTreeMap (); for(Stringstr:paths.keySet()){ map.put(parseInt(str),paths.get(str)); } //重命名该文件 ReNameFile(filePath,endWorld,map); }
重命名
privatevoidReNameFile(StringfilePath,StringendWorld, TreeMapmap){ for(inti:map.keySet()){ Stringpath=map.get(i); Filef=newFile(filePath+File.separator+path); Filedest=newFile(filePath+File.separator+i +path.substring(path.indexOf(endWorld)+1)); if(f.exists()&&!dest.exists()){ f.renameTo(dest); } f=null; dest=null; } }
将中文描述的数字转换为数字,如将一百二十转换为120
privateintparseInt(Stringstr){
if(str.length()==1){
if(str.equals("十")){
return10;
}
returngetInt(str.charAt(0));
}else{
StringBuffersb=newStringBuffer();
for(inti=0;i
完整代码
importjava.io.File;
importjava.util.HashMap;
importjava.util.TreeMap;
/**
*将一个文件夹中所有满足条件的文件名替换
*
*条件:将从开始字到结束字的字符串替换成对应的数字
*
*如:第八讲替换成8
*/
publicclassMain{
publicstaticvoidmain(String[]args){
Mainm=newMain();
//文件夹位置
StringfilePath="D:\\新建文件夹\\OOAD与UML教学视频";
//从哪个字(startWorld)开始替换到哪个字(endWorld)结束
StringstartWorld="第";
StringendWorld="讲";
m.ReName(filePath,startWorld,endWorld);
}
/***
*@paramfilePath文件夹位置
*@paramstartWorld开始替换的字
*@paramendWorld结束替换的字
*/
privatevoidReName(StringfilePath,StringstartWorld,StringendWorld){
Filefile=newFile(filePath);
if(!file.exists()||!file.isDirectory()){
System.out.println("文件不存在");
return;
}
String[]list=file.list();
//以第xxx讲-文件全名的键值对存储文件
HashMappaths=newHashMap();
for(Stringstr:list){
intstart=str.indexOf(startWorld)+1;
intend=str.indexOf(endWorld);
if(start!=0&&end!=-1){
paths.put(str.substring(start,end),str);
}else{
System.out.println("文件"+str+"不满足替换条件");
}
}
//对文件名进行排序
orderPath(filePath,endWorld,paths);
}
privatevoidorderPath(StringfilePath,StringendWorld,
HashMappaths){
if(paths.isEmpty()){
return;
}
TreeMapmap=newTreeMap();
for(Stringstr:paths.keySet()){
map.put(parseInt(str),paths.get(str));
}
//重命名该文件
ReNameFile(filePath,endWorld,map);
}
privatevoidReNameFile(StringfilePath,StringendWorld,
TreeMapmap){
for(inti:map.keySet()){
Stringpath=map.get(i);
Filef=newFile(filePath+File.separator+path);
Filedest=newFile(filePath+File.separator+i
+path.substring(path.indexOf(endWorld)+1));
if(f.exists()&&!dest.exists()){
f.renameTo(dest);
}
f=null;
dest=null;
}
}
privateintparseInt(Stringstr){
if(str.length()==1){
if(str.equals("十")){
return10;
}
returngetInt(str.charAt(0));
}else{
StringBuffersb=newStringBuffer();
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。