Java實現單個目錄下批量修改、重命名文件名

我們平時去下載的文件或者視頻都會有很多的前綴部分,有些前綴過長,也無法一一單獨修改文件名。所以令人煩惱、但是作爲程序猿,這都不是事。接下來貼上代碼,需要的小夥伴只需要修改newString、oldString 、以及指定文件的路徑就可以批量修改文件名啦!!!

package test;

import java.io.File;
import java.io.IOException;

/**
 * 
 * @author hehaiyang
 *
 */
public class fileRename {
    static String newString = "";//新字符串,如果是去掉前綴後綴就留空,否則寫上需要替換的字符串
    static String oldString = "-尚硅谷-老韓圖解Java數據結構和算法";//要被替換的字符串
    static String dir = "F:\\Java數據結構\\視頻";//文件所在路徑,所有文件的根目錄,記得修改爲你電腦上的文件所在路徑

    public static void main(String[] args) throws IOException {
        recursiveTraversalFolder(dir);//遞歸遍歷此路徑下所有文件夾
    }
   /**
   * 遞歸遍歷文件夾獲取文件名稱
   */
    public static void recursiveTraversalFolder(String path) {
        File folder = new File(path);
        if (folder.exists()) {
            File[] fileArr = folder.listFiles();
            if (null == fileArr || fileArr.length == 0) {
                System.out.println("文件夾是空的!");
                return;
            } else {
                File newDir = null;//文件所在文件夾路徑+新文件名
                String newName = "";//新文件名
                String fileName = null;//舊文件名
                File parentPath = new File("");//文件所在父級路徑
                for (File file : fileArr) {
                    if (file.isDirectory()) {//是文件夾,繼續遞歸,如果需要重命名文件夾,這裏可以做處理
                        System.out.println("文件夾:" + file.getAbsolutePath() + ",繼續遞歸!");
                        recursiveTraversalFolder(file.getAbsolutePath());
                    } else {//是文件,判斷是否需要重命名
                        fileName = file.getName();
                        parentPath = file.getParentFile();
                        if (fileName.contains(oldString)) {//文件名包含需要被替換的字符串
                            newName = fileName.replaceAll(oldString, newString);//新名字
                            newDir = new File(parentPath + "/" + newName);//文件所在文件夾路徑+新文件名
                            file.renameTo(newDir);//重命名
                            System.out.println("修改後:" + newDir);
                        }
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
    }
}

執行代碼:

修改後:F:\Java數據結構\視頻\001幾個經典的算法面試題(1).avi
修改後:F:\Java數據結構\視頻\002幾個經典的算法面試題(2).avi
修改後:F:\Java數據結構\視頻\003內容介紹和授課方式.avi
修改後:F:\Java數據結構\視頻\004數據結構和算法的關係.avi
修改後:F:\Java數據結構\視頻\005編程中實際遇到的幾個問題.avi
修改後:F:\Java數據結構\視頻\006線性結構和非線性結構.avi
修改後:F:\Java數據結構\視頻\007稀疏數組的應用場景.avi
修改後:F:\Java數據結構\視頻\008稀疏數組轉換的思路分析.avi
修改後:F:\Java數據結構\視頻\009稀疏數組的代碼實現.avi
修改後:F:\Java數據結構\視頻\010隊列的應用場景和介紹.avi
修改後:F:\Java數據結構\視頻\011數組模擬隊列的思路分析.avi
修改後:F:\Java數據結構\視頻\012數組模擬隊列代碼實現(1).avi
修改後:F:\Java數據結構\視頻\013數組模擬隊列代碼實現(2).avi
修改後:F:\Java數據結構\視頻\014數組模擬環形隊列思路分析圖.avi
修改後:F:\Java數據結構\視頻\015數組模擬環形隊列實現.avi
修改後:F:\Java數據結構\視頻\016單鏈表介紹和內存佈局.avi
修改後:F:\Java數據結構\視頻\017單鏈表創建和遍歷的分析實現.avi
修改後:F:\Java數據結構\視頻\018單鏈表按順序插入節點.avi
修改後:F:\Java數據結構\視頻\019單鏈表節點的修改.avi
修改後:F:\Java數據結構\視頻\020單鏈表節點的刪除和小結.avi
修改後:F:\Java數據結構\視頻\021單鏈表新浪面試題.avi
修改後:F:\Java數據結構\視頻\022單鏈表騰訊面試題.avi
修改後:F:\Java數據結構\視頻\023單鏈表百度面試題.avi
修改後:F:\Java數據結構\視頻\024雙向鏈表增刪改查分析圖解.avi
修改後:F:\Java數據結構\視頻\025雙向鏈表增刪改查代碼實現.avi
修改後:F:\Java數據結構\視頻\026雙向鏈表功能測試和小結.avi
修改後:F:\Java數據結構\視頻\027環形鏈表介紹和約瑟夫問題.avi
修改後:F:\Java數據結構\視頻\028約瑟夫問題分析圖解和實現(1).avi
修改後:F:\Java數據結構\視頻\029約瑟夫問題分析圖解和實現(2).avi
修改後:F:\Java數據結構\視頻\030棧的應用場景和介紹.avi
修改後:F:\Java數據結構\視頻\031棧的思路分析和代碼實現.avi
修改後:F:\Java數據結構\視頻\032棧的功能測試和小結.avi
修改後:F:\Java數據結構\視頻\033棧實現綜合計算器思路分析(1).avi
修改後:F:\Java數據結構\視頻\034棧實現綜合計算器代碼實現(2).avi
修改後:F:\Java數據結構\視頻\035棧實現綜合計算器代碼實現(3).avi
修改後:F:\Java數據結構\視頻\036前綴 中綴 後綴表達式規則.avi
修改後:F:\Java數據結構\視頻\037逆波蘭計算器分析和實現(1).avi
修改後:F:\Java數據結構\視頻\038逆波蘭計算器分析和實現(2).avi
修改後:F:\Java數據結構\視頻\039中綴轉後綴表達式思路分析.avi
修改後:F:\Java數據結構\視頻\040中綴轉後綴表達式代碼實現(1).avi
修改後:F:\Java數據結構\視頻\041中綴轉後綴表達式代碼實現(2).avi
修改後:F:\Java數據結構\視頻\042完整版逆波蘭計算器和小結.avi
修改後:F:\Java數據結構\視頻\043遞歸應用場景和調用機制.avi
修改後:F:\Java數據結構\視頻\044遞歸能解決的問題和規則.avi
修改後:F:\Java數據結構\視頻\045迷宮回溯問題分析和實現(1).avi
修改後:F:\Java數據結構\視頻\046迷宮回溯問題分析和實現(2).avi
修改後:F:\Java數據結構\視頻\047八皇后問題分析和實現(1).avi
修改後:F:\Java數據結構\視頻\048八皇后問題分析和實現(2).avi
修改後:F:\Java數據結構\視頻\049八皇后問題分析和實現(3).avi
修改後:F:\Java數據結構\視頻\050排序算法介紹和分類.avi
修改後:F:\Java數據結構\視頻\051時間頻度介紹和特點.avi
修改後:F:\Java數據結構\視頻\052時間複雜度計算和舉例說明.avi
修改後:F:\Java數據結構\視頻\053平均和最壞時間複雜度介紹.avi
修改後:F:\Java數據結構\視頻\054冒泡排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\055冒泡排序算法代碼實現.avi
修改後:F:\Java數據結構\視頻\056冒泡排序算法優化和總結.avi
修改後:F:\Java數據結構\視頻\057選擇排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\058選擇排序算法代碼實現.avi
修改後:F:\Java數據結構\視頻\059選擇排序算法速度測試.avi
修改後:F:\Java數據結構\視頻\060插入排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\061插入排序算法代碼實現.avi
修改後:F:\Java數據結構\視頻\062插入排序算法速度測試.avi
修改後:F:\Java數據結構\視頻\063希爾排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\064希爾排序[交換式]算法實現.avi
修改後:F:\Java數據結構\視頻\065希爾排序[移位式]算法實現.avi
修改後:F:\Java數據結構\視頻\066快速排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\067快速排序算法代碼實現.avi
修改後:F:\Java數據結構\視頻\068快速排序算法速度測試.avi
修改後:F:\Java數據結構\視頻\069歸併排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\070歸併排序算法代碼實現.avi
修改後:F:\Java數據結構\視頻\071歸併排序算法速度測試.avi
修改後:F:\Java數據結構\視頻\072基數排序算法思路圖解.avi
修改後:F:\Java數據結構\視頻\073基數排序算法代碼實現(1).avi
修改後:F:\Java數據結構\視頻\074基數排序算法代碼實現(2).avi
修改後:F:\Java數據結構\視頻\075基數排序算法注意事項.avi
修改後:F:\Java數據結構\視頻\076排序算法時間複雜度比較.avi
修改後:F:\Java數據結構\視頻\077線性查找分析和實現.avi
修改後:F:\Java數據結構\視頻\078二分查找算法思路圖解.avi
修改後:F:\Java數據結構\視頻\079二分查找算法代碼實現.avi
修改後:F:\Java數據結構\視頻\080二分查找算法功能完善.avi
修改後:F:\Java數據結構\視頻\081插值查找算法工作原理.avi
修改後:F:\Java數據結構\視頻\082插值查找算法代碼實現.avi
修改後:F:\Java數據結構\視頻\083斐波那契查找算法原理.avi
修改後:F:\Java數據結構\視頻\084斐波那契查找代碼實現.avi
修改後:F:\Java數據結構\視頻\085斐波那契查找算法小結.avi
修改後:F:\Java數據結構\視頻\086哈希表的介紹和內存佈局.avi
修改後:F:\Java數據結構\視頻\087哈希表實現思路圖解.avi
修改後:F:\Java數據結構\視頻\088哈希表代碼實現(1).avi
修改後:F:\Java數據結構\視頻\089哈希表代碼實現(2).avi
修改後:F:\Java數據結構\視頻\090數組 鏈表 樹存儲方式分析.avi
修改後:F:\Java數據結構\視頻\091二叉樹的概念和常用術語.avi
修改後:F:\Java數據結構\視頻\092前序中序後序遍歷二叉樹圖解.avi
修改後:F:\Java數據結構\視頻\093前序中序後序遍歷代碼實現(1).avi
修改後:F:\Java數據結構\視頻\094前序中序後序遍歷代碼實現(2).avi
修改後:F:\Java數據結構\視頻\095前序中序後序查找思路圖解.avi
修改後:F:\Java數據結構\視頻\096前序中序後序查找代碼實現(1).avi
修改後:F:\Java數據結構\視頻\097前序中序後序查找代碼實現(2).avi
修改後:F:\Java數據結構\視頻\098二叉樹刪除結點思路圖解.avi
修改後:F:\Java數據結構\視頻\099二叉樹刪除結點代碼實現.avi
修改後:F:\Java數據結構\視頻\100順序存儲二叉樹思路圖解.avi
修改後:F:\Java數據結構\視頻\101順序存儲二叉樹代碼實現.avi
修改後:F:\Java數據結構\視頻\102線索化二叉樹的介紹.avi
修改後:F:\Java數據結構\視頻\103線索化二叉樹思路圖解.avi
修改後:F:\Java數據結構\視頻\104線索化二叉樹代碼實現1.avi
修改後:F:\Java數據結構\視頻\105線索化二叉樹代碼實現2.avi
修改後:F:\Java數據結構\視頻\106遍歷線索化二叉樹實現.avi
修改後:F:\Java數據結構\視頻\107大頂堆和小頂堆圖解說明.avi
修改後:F:\Java數據結構\視頻\108堆排序的思路圖解.avi
修改後:F:\Java數據結構\視頻\109堆排序的代碼實現1.avi
修改後:F:\Java數據結構\視頻\110堆排序的代碼實現2.avi
修改後:F:\Java數據結構\視頻\111堆排序的速度測試和小結.avi
修改後:F:\Java數據結構\視頻\112赫夫曼樹的基本介紹.avi
修改後:F:\Java數據結構\視頻\113赫夫曼樹創建步驟圖解.avi
修改後:F:\Java數據結構\視頻\114赫夫曼樹創建代碼實現.avi
修改後:F:\Java數據結構\視頻\115變長編碼的舉例說明.avi
修改後:F:\Java數據結構\視頻\116赫夫曼編碼的原理圖解.avi
修改後:F:\Java數據結構\視頻\117數據壓縮創建赫夫曼樹思路.avi
修改後:F:\Java數據結構\視頻\118數據壓縮創建赫夫曼樹實現.avi
修改後:F:\Java數據結構\視頻\119數據壓縮生成赫夫曼編碼表.avi
修改後:F:\Java數據結構\視頻\120數據壓縮赫夫曼編碼字節數組.avi
修改後:F:\Java數據結構\視頻\121數據壓縮赫夫曼字節數組封裝.avi
修改後:F:\Java數據結構\視頻\122數據解壓字節轉二進制字符串.avi
修改後:F:\Java數據結構\視頻\123數據解壓赫夫曼解碼.avi
修改後:F:\Java數據結構\視頻\124使用赫夫曼編碼壓縮文件.avi
修改後:F:\Java數據結構\視頻\125使用赫夫曼編碼解壓文件.avi
修改後:F:\Java數據結構\視頻\126赫夫曼編碼注意事項.avi
修改後:F:\Java數據結構\視頻\127二叉排序樹(BST)的介紹.avi
修改後:F:\Java數據結構\視頻\128二叉排序樹(BST)創建和遍歷.avi
修改後:F:\Java數據結構\視頻\129二叉排序樹刪除結點思路圖解.avi
修改後:F:\Java數據結構\視頻\130二叉排序樹刪除葉子結點(1).avi
修改後:F:\Java數據結構\視頻\131二叉排序樹刪除葉子結點(2).avi
修改後:F:\Java數據結構\視頻\132BST刪除有一顆子樹的結點.avi
修改後:F:\Java數據結構\視頻\133BST刪除有二顆子樹的結點.avi
修改後:F:\Java數據結構\視頻\134BST刪除結點的注意事項.avi
修改後:F:\Java數據結構\視頻\135平衡二叉樹(AVL樹)介紹.avi
修改後:F:\Java數據結構\視頻\136AVL樹左旋轉思路圖解.avi
修改後:F:\Java數據結構\視頻\137AVL樹高度求解.avi
修改後:F:\Java數據結構\視頻\138AVL樹左旋轉代碼實現.avi
修改後:F:\Java數據結構\視頻\139AVL樹右旋轉圖解和實現.avi
修改後:F:\Java數據結構\視頻\140AVL樹雙旋轉圖解和實現.avi
修改後:F:\Java數據結構\視頻\141平衡二叉樹(AVL樹)小結.avi
修改後:F:\Java數據結構\視頻\142多叉樹原理圖解.avi
修改後:F:\Java數據結構\視頻\14323樹原理圖解.avi
修改後:F:\Java數據結構\視頻\144B樹和B加樹原理圖解.avi
修改後:F:\Java數據結構\視頻\145B星樹和多路查找樹小結.avi
修改後:F:\Java數據結構\視頻\146圖的基本介紹和存儲形式.avi
修改後:F:\Java數據結構\視頻\147圖的創建圖解和代碼實現.avi
修改後:F:\Java數據結構\視頻\148圖的深度優先(DFS)算法圖解.avi
修改後:F:\Java數據結構\視頻\149圖的深度優先(DFS)代碼實現.avi
修改後:F:\Java數據結構\視頻\150圖的廣度優先(BFS)算法圖解.avi
修改後:F:\Java數據結構\視頻\151圖的廣度優先(BFS)代碼實現.avi
修改後:F:\Java數據結構\視頻\152DFS和BFS比較及圖小結.avi
修改後:F:\Java數據結構\視頻\153二分查找非遞歸算法分析實現.avi
修改後:F:\Java數據結構\視頻\154分治算法的設計模式.avi
修改後:F:\Java數據結構\視頻\155分治算法解決漢諾塔問題.avi
修改後:F:\Java數據結構\視頻\156動態規劃算法基本介紹.avi
修改後:F:\Java數據結構\視頻\157動態規劃算法解決揹包問題1.avi
修改後:F:\Java數據結構\視頻\158動態規劃算法解決揹包問題2.avi
修改後:F:\Java數據結構\視頻\159動態規劃算法解決揹包問題3.avi
修改後:F:\Java數據結構\視頻\160暴力匹配算法解決字串匹配問題.avi
修改後:F:\Java數據結構\視頻\161KMP算法解決字串匹配思路圖解.avi
修改後:F:\Java數據結構\視頻\162KMP算法解決字串匹配代碼實現.avi
修改後:F:\Java數據結構\視頻\163動態規劃算法和KMP算法小結.avi
修改後:F:\Java數據結構\視頻\164貪心算法的基本介紹.avi
修改後:F:\Java數據結構\視頻\165貪心算法解決集合覆蓋思路圖解.avi
修改後:F:\Java數據結構\視頻\166貪心算法解決集合覆蓋代碼實現.avi
修改後:F:\Java數據結構\視頻\167貪心算法解決集合覆蓋注意事項.avi
修改後:F:\Java數據結構\視頻\168普利姆算法(Prim)和MST介紹.avi
修改後:F:\Java數據結構\視頻\169Prim算法解決修路問題思路圖解.avi
修改後:F:\Java數據結構\視頻\170Prim算法解決修路問題生成圖.avi
修改後:F:\Java數據結構\視頻\171Prim算法解決修路問題代碼實現.avi
修改後:F:\Java數據結構\視頻\172克魯斯卡爾((Kruskal)算法圖解.avi
修改後:F:\Java數據結構\視頻\173Kruskal算法解決公交問題(1).avi
修改後:F:\Java數據結構\視頻\174Kruskal算法解決公交問題(2).avi
修改後:F:\Java數據結構\視頻\175Kruskal算法解決公交問題(3).avi
修改後:F:\Java數據結構\視頻\176Kruskal算法解決公交問題(4).avi
修改後:F:\Java數據結構\視頻\177Kruskal算法解決公交問題小結.avi
修改後:F:\Java數據結構\視頻\178迪傑斯特拉(Dijkstra)算法基本介紹.avi
修改後:F:\Java數據結構\視頻\179Dijkstra算法思路圖解.avi
修改後:F:\Java數據結構\視頻\180Dijkstra算法解決最短路徑問題(1).avi
修改後:F:\Java數據結構\視頻\181Dijkstra算法解決最短路徑問題(2).avi
修改後:F:\Java數據結構\視頻\182Dijkstra算法解決最短路徑問題(3).avi
修改後:F:\Java數據結構\視頻\183Dijkstra算法解決最短路徑問題(4).avi
修改後:F:\Java數據結構\視頻\184Dijkstra算法解決最短路徑問題(5).avi
修改後:F:\Java數據結構\視頻\185弗洛伊德(Floyd)算法基本介紹.avi
修改後:F:\Java數據結構\視頻\186弗洛伊德(Floyd)算法思路圖解.avi
修改後:F:\Java數據結構\視頻\187Floyd算法解決最短路徑問題(1).avi
修改後:F:\Java數據結構\視頻\188Floyd算法解決最短路徑問題(2).avi
修改後:F:\Java數據結構\視頻\189騎士周遊問題和遊戲說明.avi
修改後:F:\Java數據結構\視頻\190騎士周遊問題思路圖解.avi
修改後:F:\Java數據結構\視頻\191騎士周遊回溯算法代碼實現(1).avi
修改後:F:\Java數據結構\視頻\192騎士周遊回溯算法代碼實現(2).avi
修改後:F:\Java數據結構\視頻\193騎士周遊回溯算法代碼實現(3).avi
修改後:F:\Java數據結構\視頻\194騎士周遊回溯算法用貪心算法優化.avi
修改後:F:\Java數據結構\視頻\195結束語(賣油翁和老黃牛).avi

修改前:

在這裏插入圖片描述

修改後:

在這裏插入圖片描述

現在看起來是不是好很多呀!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章