Java 實(shí)現(xiàn)文件批量重命名親測(cè)可用(精簡(jiǎn)版)
之前在網(wǎng)上下載了很多視頻,解壓縮后,發(fā)現(xiàn)里面每個(gè)文件前面都有一長(zhǎng)串的網(wǎng)址,導(dǎo)致我根本看不清每個(gè)視頻的名字到底叫什么?
網(wǎng)上搜了一些批量重命名的方法,可都不是我想要的,既然這樣,干脆自己動(dòng)手用Java寫一個(gè)吧。測(cè)了一下應(yīng)該沒(méi)問(wèn)題,現(xiàn)在分享出來(lái)。
先上代碼:
import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** * 重命名規(guī)則類 * @author jack */ class ReplacementChain{ private Map<String,String> map; public ReplacementChain() { this.map = new HashMap<String, String>(); } public Map<String, String> getMap() { return map; } // 添加新的替換規(guī)則(字符串替換) public ReplacementChain addRegulation(String oldStr , String newStr){ this.map.put(oldStr, newStr); return this; } } /** * 重命名類 * @author Jack */ public class Rename { /** * 批量重命名 * @param path * @param replacementChain */ public static void multiRename(String path,ReplacementChain replacementChain){ File file = new File(path); boolean isDirectory = file.isDirectory(); /** 如果不是文件夾,就返回* */ if(!isDirectory){ System.out.println(path + "不是一個(gè)文件夾!"); return; } String[] files = file.list(); File f = null; String filename = ""; String oldFileName = ""; //之前的名字 /** 循環(huán)遍歷所有文件* */ for(String fileName : files){ oldFileName = fileName; Map<String, String> map = replacementChain.getMap(); for (Entry<String, String> entry : map.entrySet()) { fileName = fileName.replace(entry.getKey(), entry.getValue()); } f = new File(path + "\\" + oldFileName); //輸出地址和原路徑保持一致 f.renameTo(new File(path + "\\" + fileName)); } System.out.println("恭喜,批量重命名成功!"); } public static void main(String[] args) { } }
使用方法:
假如我現(xiàn)在有一個(gè)文件夾,里面有若干個(gè)txt文件,都有一個(gè)很長(zhǎng)的前綴和后綴。
現(xiàn)在我希望把它們的前綴都去掉;
第一步,在main方法里面新建一個(gè) ReplacementChain 類的實(shí)例,這是一個(gè)規(guī)則類。主要就是設(shè)置一些替換規(guī)則。
ReplacementChain replacementChain = new ReplacementChain();
第二步,新增替換規(guī)則
第一個(gè)文件的全名:
【我是一個(gè)好長(zhǎng)好長(zhǎng)的前綴哦】~~~~~ 小說(shuō)001(我是萌萌的小尾巴).txt
我們希望把【我是一個(gè)好長(zhǎng)好長(zhǎng)的前綴哦】~~~~~ 和 (我是萌萌的小尾巴) 去掉,只需要在replacementChain上面添加兩個(gè)替換規(guī)則即可。
replacementChain.addRegulation("【我是一個(gè)好長(zhǎng)好長(zhǎng)的前綴哦】~~~~~", "").addRegulation("(我是萌萌的小尾巴)", "");
addRegulation支持鏈?zhǔn)秸{(diào)用。
第三步,調(diào)用批量重命名方法
Rename.multiRename("F:\\測(cè)試文件夾", replacementChain);
傳兩個(gè)參數(shù),第一個(gè)是需要批量處理的文件所在的文件夾路徑,第二個(gè)就是 replacementChain 對(duì)象。
運(yùn)行
控制臺(tái)如果打印出: 恭喜,批量重命名成功!
那么就說(shuō)明成功了。
我本地的那些文件已經(jīng)被批量重命名了:
以上所述是小編給大家介紹的Java 實(shí)現(xiàn)文件批量重命名親測(cè)可用(精簡(jiǎn)版),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Mybatis源碼分析之存儲(chǔ)過(guò)程調(diào)用和運(yùn)行流程
這一篇我們學(xué)習(xí)一下Mybatis調(diào)用存儲(chǔ)過(guò)程的使用和運(yùn)行流程,首先我們創(chuàng)建一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程,具體創(chuàng)建過(guò)程大家可以通過(guò)本文學(xué)習(xí)下2016-11-11SpringBoot feign動(dòng)態(tài)設(shè)置數(shù)據(jù)源(https請(qǐng)求)
這篇文章主要介紹了SpringBoot如何在運(yùn)行時(shí)feign動(dòng)態(tài)添加數(shù)據(jù)源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-08-08Mybatis實(shí)現(xiàn)插入數(shù)據(jù)后返回主鍵過(guò)程解析
這篇文章主要介紹了Mybatis實(shí)現(xiàn)插入數(shù)據(jù)后返回主鍵過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06springboot 基于Tomcat容器的自啟動(dòng)流程分析
這篇文章主要介紹了springboot 基于Tomcat容器的自啟動(dòng)流程分析,Spring通過(guò)注解導(dǎo)入Bean大體可分為四種方式,我們主要來(lái)說(shuō)Import的兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2020-02-02springboot 打包部署 共享依賴包(分布式開(kāi)發(fā)集中式部署微服務(wù))
這篇文章主要介紹了springboot 打包部署 共享依賴包(分布式開(kāi)發(fā)集中式部署微服務(wù))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-06-06通過(guò)Java帶你了解網(wǎng)絡(luò)IO模型
這篇文章將通過(guò)Java帶大家了解網(wǎng)絡(luò)IO模型,包括BIO,NoBlockingIO,NIO(NewIO),AIO等做了詳細(xì)得介紹,感興趣的小伙伴可以參考閱讀本文2023-05-05