介绍
这篇文章主要介绍了java怎么实现文件重命名,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>背景强>
我们经常在网上下载一些视频教程,然而这些视频命名规则各不相同,即使对于相同类型的文件名来说,当文件数量很大且文件名全部是中文时,文件排序是非规则的,因此本篇博客主要讲解一种改变文件夹名称使得文件按照规律进行排序。
<强>思路强>
根据文件名对文件进行排序,然后重命名文件即可。
<强>代码强>
规则:如将文件名中带有“第八讲“替换成“8”:
构建排序规则
/* * * ,* @param filePath 文件夹位置 ,* @param startWorld 开始替换的字 ,* @param endWorld 结束替换的字 */private 才能;void 重命名(String filePath, String startWorld,, String endWorld), { ,,,File File =, new 文件(filePath); ,,,if (! file.exists (), | |, ! file.isDirectory ()), { ,,,,,System.out.println(“文件不存在“); ,,,,,返回; ,,,} ,,,String [], list =, file.list (); ,,,//以,第xxx讲——文件全名,的键值对存储文件 ,,,HashMap<字符串,String>, paths =, new HashMap<字符串,String> (); ,,,for (String str :列表),{ ,,,,,int start =, str.indexOf (startWorld), +, 1; ,,,,,int 最终获得=,str.indexOf (endWorld); ,,,,,if (start !=, 0,,,,最终获得!=,1),{ ,,,,,,,paths.put (str.substring(开始,结束),str); ,,,,,},{else ,,,,,,,System.out.println(“文件,,,+,str +,“,不满足替换条件“); ,,,,,} ,,,} ,,,//对文件名进行排序 ,,,orderPath (filePath, endWorld,,路径); 以前,,}>排序
private void orderPath (String filePath, String endWorld, ,,,,,HashMap<字符串,String>,路径),{ ,,,if (paths.isEmpty ()), { ,,,,,返回; ,,,} ,,,TreeMap<整数,,String>, map =, new TreeMap<整数,,String> (); ,,,for (String str : paths.keySet ()), { ,,,,,map.put(方法(str), paths.get (str)); ,,,} ,,,//重命名该文件 ,,,ReNameFile (filePath, endWorld,,地图); 以前,,}>重命名
private void ReNameFile (String filePath, String endWorld, ,,,,,TreeMap<整数,,String>,地图),{ ,,,for (int 小姐::,map.keySet ()), { ,,,,,String path =, map.get(我); ,,,,,File f =, new 文件(时间+ filePath File.separator +,路径); ,,,,,File dest =, new 文件(时间+ filePath File.separator +,我 ,,,,,,,,,+,path.substring (path.indexOf (endWorld), +, - 1)); ,,,,,if (f.exists (),,,, ! dest.exists ()), { ,,,,,,,f.renameTo(桌子); ,,,,,} ,,,,,f =,空; ,,,,,dest =,空; ,,,} 以前,,}>将中文描述的数字转换为数字,如将一百二十转换为120
private int 方法(String str), { ,,,if (str.length (),==, 1), { ,,,,,if (str.equals(“十“)),{ ,,,,,,,return 10; ,,,,,} ,,,,,return getInt (str.charAt (0)); ,,,},{else ,,,,,StringBuffer sb =, new StringBuffer (); ,,,,,for (int 小姐:=,0;,小姐:& lt;, str.length();,我+ +),{ ,,,,,,,char c =, str.charAt(我); ,,,,,,,if (c !=, & # 39;百& # 39;,,,,c !=, & # 39;十& # 39;),{ ,,,,,,,,,sb.append (getInt (c)); ,,,,,,,} null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nulljava怎么实现文件重命名