最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java操作文件之文件重命名實(shí)現(xiàn)方式

 更新時(shí)間:2026年03月25日 15:38:14   作者:一口茶茶  
這篇文章主要介紹了java操作文件之文件重命名實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

本文僅為日常記錄,操作記錄,方便后期使用查找

背景

本地電腦文件太多了,又不想一個(gè)一個(gè)重命名,改名字什么的很麻煩。使用文件夾名稱+文件名稱作為新的文件名,其他重命名可按需要修改。

先要達(dá)到效果:文件夾名稱+文件名作為新的文件名稱。

讀取文件夾和文件信息

        File dirFile = new File(filepath);
//            當(dāng)前路徑下的所有文件夾、文件存放到一個(gè)文件數(shù)組
        System.out.println(Dir(dirFile));
        //獲取文件路徑存放到一個(gè)數(shù)據(jù)中 文件絕對(duì)路徑
        DirAll(dirFile);

獲取文件信息

File f = new File(s);
String folder_Fullname = f.getParent();
String folder_name = folder_Fullname.substring(folder_Fullname.lastIndexOf("\\") + 1);
//修改文件名稱 新文件名稱規(guī)則:上一級(jí)目錄名稱+文件名稱
//獲取文件名稱 文件名稱 后綴名
String file_Fullname = s.substring(s.lastIndexOf("\\") + 1);
String file_name = file_Fullname.substring(0, file_Fullname.lastIndexOf("."));
String file_lastname = s.substring(s.lastIndexOf(".") + 1);

//修改名稱后新文件名稱(上一級(jí)目錄名稱+文件名稱)    新文件路徑
String file_newName = folder_name + file_Fullname;
String file_newFullName = folder_Fullname + "\\" + folder_name + file_Fullname;

System.out.println("文件完整路徑 fileFullname:" + s);
System.out.println("文件所在目錄 folder_Fullname:" + folder_Fullname);
System.out.println("文件目錄名稱 folder_name:" + folder_name);
System.out.println("文件完整名稱 file_Fullname:" + file_Fullname);
System.out.println("文件名稱 file_name:" + file_name);
System.out.println("文件名 file_name:" + file_name + ",擴(kuò)展名 file_lastname:" + file_lastname);
System.out.println("新文件名稱 file_newName:" + file_newName);
System.out.println("新文件完整路徑 file_newFullName:" + file_newFullName);

重命名-修改文件名稱

//開(kāi)始重命名 修改文件名稱 file_newFullName 新文件名完整路徑
File mm = new File(file_newFullName);
if (f.renameTo(mm)) {
    s_num++;
    System.out.println("新文件名[" + file_newName + "]修改成功!");
} else {
    e_num++;
    System.out.println("新文件名[" + file_newName + "]修改失敗");
}

執(zhí)行結(jié)果

完整代碼

package main;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

public class renameNewFile {
    public static void main (String[] args) {
        long start = System.currentTimeMillis();
        //1、讀取指定目錄下所有文件夾及文件文成
        //2、所有文件名稱和后綴名
        String filepath;
        filepath = "D:\\testfile\\20220623photossize";

        //讀取指定目錄下文件信息 包含文件名稱 文件路徑
        String renameInfo = readFilepathInfo(filepath);
        //驗(yàn)證改名是否成功獲取所有文件名稱
        testGetfilename2(filepath);
        System.out.println(renameInfo);
        useTime(start);//耗時(shí)
    }

    //讀取指定目錄下文件信息 包含文件名稱 文件路徑
    private static String readFilepathInfo (String filepath) {
        File dirFile = new File(filepath);
//            當(dāng)前路徑下的所有文件夾、文件存放到一個(gè)文件數(shù)組
        System.out.println(Dir(dirFile));
        //獲取文件路徑存放到一個(gè)數(shù)據(jù)中 文件絕對(duì)路徑
        DirAll(dirFile);

        System.out.println(dirAllStrArr);
        //記錄成功失敗數(shù)量
        int s_num = 0;
        int e_num = 0;
        //解析數(shù)組獲取所有文件的路徑
        System.out.println("=============解析數(shù)組獲取所有文件的路徑====================");
//        for (int i = 0; i < dirAllStrArr.size(); i++) {
        for (String s : dirAllStrArr) {
            System.out.println("------------------------------------------------");
            File f = new File(s);
            String folder_Fullname = f.getParent();
            String folder_name = folder_Fullname.substring(folder_Fullname.lastIndexOf("\\") + 1);
            //修改文件名稱 新文件名稱規(guī)則:上一級(jí)目錄名稱+文件名稱
            //獲取文件名稱 文件名稱 后綴名
            String file_Fullname = s.substring(s.lastIndexOf("\\") + 1);
            String file_name = file_Fullname.substring(0, file_Fullname.lastIndexOf("."));
            String file_lastname = s.substring(s.lastIndexOf(".") + 1);

            //修改名稱后新文件名稱(上一級(jí)目錄名稱+文件名稱)    新文件路徑
            String file_newName = folder_name + file_Fullname;
            String file_newFullName = folder_Fullname + "\\" + folder_name + file_Fullname;

            System.out.println("文件完整路徑 fileFullname:" + s);
            System.out.println("文件所在目錄 folder_Fullname:" + folder_Fullname);
            System.out.println("文件目錄名稱 folder_name:" + folder_name);
            System.out.println("文件完整名稱 file_Fullname:" + file_Fullname);
            System.out.println("文件名稱 file_name:" + file_name);
            System.out.println("文件名 file_name:" + file_name + ",擴(kuò)展名 file_lastname:" + file_lastname);
            System.out.println("新文件名稱 file_newName:" + file_newName);
            System.out.println("新文件完整路徑 file_newFullName:" + file_newFullName);

            //控制臺(tái)輸出
            /*
            文件完整路徑 fileFullname:E:\testFilespath\文件5\23234rrr (4).txt
            文件所在目錄 folder_Fullname:E:\testFilespath\文件5
            文件目錄名稱 folder_name:文件5
            文件完整名稱 file_Fullname:23234rrr (4).txt
            文件名稱 file_name:23234rrr (4)
            文件名 file_name:23234rrr (4),擴(kuò)展名 file_lastname:txt
            新文件名稱 file_newName:文件523234rrr (4).txt
            新文件完整路徑 file_newFullName:E:\testFilespath\文件5\文件523234rrr (4).txt
            */
            //開(kāi)始重命名 修改文件名稱 file_newFullName 新文件名完整路徑
            File mm = new File(file_newFullName);
            if (f.renameTo(mm)) {
                s_num++;
                System.out.println("新文件名[" + file_newName + "]修改成功!");
            } else {
                e_num++;
                System.out.println("新文件名[" + file_newName + "]修改失敗");
            }
        }
        return "新文件名修改成功:" + s_num + "條,失敗:" + e_num + "條,執(zhí)行完成!";
    }


    // 設(shè)置一個(gè)全局動(dòng)態(tài)數(shù)組,來(lái)存放文件路徑
    // 主要遍歷文件夾,包含所有子文件夾、文件的情況時(shí),用到遞歸,所以要這樣設(shè)置
    public static ArrayList<String> dirAllStrArr = new ArrayList<>();

    public static void DirAll (File dirFile) {
        if (dirFile.exists()) {
            File[] files = dirFile.listFiles();
            if (files != null) {
                for (File file : files) {
                    // 如果遇到文件夾則遞歸調(diào)用。
                    if (file.isDirectory()) {
                        // 遞歸調(diào)用
                        DirAll(file);
                    } else {
                        // 如果遇到文件夾則放入數(shù)組
                        if (dirFile.getPath().endsWith(File.separator)) {
                            dirAllStrArr.add(dirFile.getPath() + file.getName());
                        } else {
                            dirAllStrArr.add(dirFile.getPath() + File.separator
                                    + file.getName());
                        }
                    }
                }
            }
        }
    }


    public static ArrayList<String> Dir (File dirFile) {
        ArrayList<String> dirStrArr = new ArrayList<>();
        if (dirFile.exists()) {
            // 直接取出利用listFiles()把當(dāng)前路徑下的所有文件夾、文件存放到一個(gè)文件數(shù)組
            File[] files = dirFile.listFiles();
            if (files != null) {
                for (File file : files) {
                    // 如果傳遞過(guò)來(lái)的參數(shù)dirFile是以文件分隔符,也就是/或者\(yùn)結(jié)尾,則如此構(gòu)造
                    if (dirFile.getPath().endsWith(File.separator)) {
                        dirStrArr.add(dirFile.getPath() + file.getName());
                    } else {
                        // 否則,如果沒(méi)有文件分隔符,則補(bǔ)上一個(gè)文件分隔符,再加上文件名,才是路徑
                        dirStrArr.add(dirFile.getPath() + File.separator
                                + file.getName());
                    }
                }
            }
        }
        return dirStrArr;
    }

    //    getAllFileName (String path, ArrayList<String> fileName)是包括當(dāng)前文件及其子文件的文件名。
    private static void testGetfilename2 (String filepath) {
        ArrayList<String> listFileName = new ArrayList<>();
        getAllFileName(filepath, listFileName);
        for (String name : listFileName) {
            System.out.println(name);
        }
    }

    public static void getAllFileName (String path, ArrayList<String> fileName) {
        File file = new File(path);
        File[] files = file.listFiles();
        String[] names = file.list();
        if (names != null)
            fileName.addAll(Arrays.asList(names));
        if (files != null) {
            for (File a : files) {
                if (a.isDirectory()) {
                    getAllFileName(a.getAbsolutePath(), fileName);
                }
            }
        }
    }

    //計(jì)算執(zhí)行耗時(shí)
    private static void useTime (long start) {
        long finish = System.currentTimeMillis();
        long timeElapsed = finish - start;
        System.out.println("耗時(shí):" + timeElapsed);
    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Boot?Actuator?漏洞利用小結(jié)

    Spring?Boot?Actuator?漏洞利用小結(jié)

    spring對(duì)應(yīng)兩個(gè)版本,分別是Spring Boot 2.x和Spring Boot 1.x,因此后面漏洞利用的payload也會(huì)有所不同,這篇文章主要介紹了Spring?Boot?Actuator?漏洞利用小結(jié),需要的朋友可以參考下
    2023-11-11
  • java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例

    java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例

    Map在日常開(kāi)發(fā)應(yīng)用中的頻率很高,最常用的實(shí)現(xiàn)類是HashMap和有序的TreeMap,下面這篇文章主要給大家介紹了關(guān)于java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例,需要的朋友可以參考下
    2024-01-01
  • 簡(jiǎn)單了解springboot中的配置文件相關(guān)知識(shí)

    簡(jiǎn)單了解springboot中的配置文件相關(guān)知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解springboot中的配置文件相關(guān)知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 解決SpringBoot整合RocketMQ遇到的坑

    解決SpringBoot整合RocketMQ遇到的坑

    這篇文章主要介紹了解決SpringBoot整合RocketMQ遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot啟動(dòng)報(bào)錯(cuò)的11個(gè)高頻問(wèn)題排查與解決終極指南

    SpringBoot啟動(dòng)報(bào)錯(cuò)的11個(gè)高頻問(wèn)題排查與解決終極指南

    這篇文章主要為大家詳細(xì)介紹了SpringBoot啟動(dòng)報(bào)錯(cuò)的11個(gè)高頻問(wèn)題的排查與解決,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-03-03
  • Java之springcloud Sentinel案例講解

    Java之springcloud Sentinel案例講解

    這篇文章主要介紹了Java之springcloud Sentinel案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Swagger中@ApiIgnore注解的使用詳解

    Swagger中@ApiIgnore注解的使用詳解

    這篇文章主要介紹了Swagger中@ApiIgnore注解的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JavaSE異常Exception處理方法以及自定義

    JavaSE異常Exception處理方法以及自定義

    網(wǎng)絡(luò)異常exception是指在網(wǎng)絡(luò)通信過(guò)程中出現(xiàn)的異常情況,這些異常可能是由于網(wǎng)絡(luò)連接不穩(wěn)定、網(wǎng)絡(luò)故障、服務(wù)器故障、網(wǎng)絡(luò)擁堵等原因?qū)е碌?這篇文章主要給大家介紹了關(guān)于JavaSE異常Exception處理方法以及自定義的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Java超詳細(xì)梳理異常處理機(jī)制

    Java超詳細(xì)梳理異常處理機(jī)制

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會(huì)根據(jù)身體情況選擇喝開(kāi)水、吃藥、看病、等?異常處理方法。?java異常處理機(jī)制是我們java語(yǔ)言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力,程序出現(xiàn)的錯(cuò)誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-04-04
  • java解析xml常用的幾種方式總結(jié)

    java解析xml常用的幾種方式總結(jié)

    這篇文章主要介紹了java解析xml常用的幾種方式總結(jié),有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論

深水埗区| 赞皇县| 通山县| 忻城县| 金坛市| 禹州市| 财经| 华安县| 西和县| 吉木萨尔县| 呼图壁县| 容城县| 旅游| 清涧县| 东兰县| 诸暨市| 辛集市| 洱源县| 麻江县| 琼结县| 临洮县| 茌平县| 天津市| 丹江口市| 光山县| 岫岩| 华坪县| 库伦旗| 中牟县| 靖宇县| 泸溪县| 日土县| 禄丰县| 永清县| 兴山县| 广宁县| 开江县| 腾冲县| 淳化县| 敖汉旗| 石家庄市|