java文件的重命名與移動(dòng)操作實(shí)例代碼
文件的重命名與移動(dòng)操作
有時(shí)候?yàn)榱藢?duì)文件進(jìn)行統(tǒng)一訪問與管理,需要把文件進(jìn)行重命名,并移動(dòng)到新的文件夾,如何實(shí)現(xiàn)呢?
一枚簡單的java小程序即可實(shí)現(xiàn):
part_1:需求:我需要把<(E:\BaiduYun\傳智播客_張孝祥_Java多線程與并發(fā)庫高級(jí)應(yīng)用視頻教程下載)>文件夾下的所有子文件夾下的視頻文件重命名,并移動(dòng)到新的位置<(E:\BaiduYun\張孝祥_Java多線程與并發(fā)庫)>;
part_2:目錄結(jié)構(gòu)如下:
E:\BaiduYun
E:\BaiduYun\傳智播客_張孝祥_Java多線程與并發(fā)庫高級(jí)應(yīng)用視頻教程下載
E:\BaiduYun\傳智播客張孝祥_Java多線程與并發(fā)庫高級(jí)應(yīng)用視頻教程下載\01傳智播客張孝祥傳統(tǒng)線程技術(shù)回顧
part_3:程序源碼+注釋:
package cn.mike.demo; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; /** * @author Administrator * @usage 該程序?qū)崿F(xiàn)文件的重命名與移動(dòng)操作; */ public class RenameFiles { private static File srcFolder; // 源文件夾 private static File destFolder; // 目的文件夾 private static List<File> srcFiles; // 存放所有待命名的文件 static { srcFolder = new File("E:\\BaiduYun\\傳智播客_張孝祥_Java多線程與并發(fā)庫高級(jí)應(yīng)用視頻教程下載"); destFolder = new File("E:\\BaiduYun\\張孝祥_Java多線程與并發(fā)庫"); srcFiles = new ArrayList<File>(); } public static void main(String[] args) { // 對(duì)文件夾的合法性(是否存在)進(jìn)行校驗(yàn) try { checkFolder(); } catch (FileNotFoundException e) { e.printStackTrace(); return; } // 遍歷源文件夾把要修改的文件放到集合中 iterateGetFiles(RenameFiles.srcFolder); // 對(duì)集合中的元素進(jìn)行重命名(并移動(dòng)到目標(biāo)文件夾) iterateRename(); } // end method-main private static void checkFolder() throws FileNotFoundException { if (!RenameFiles.srcFolder.exists()) { throw new FileNotFoundException("指定的源文件夾不存在."); } if (!RenameFiles.destFolder.exists()) { throw new FileNotFoundException("指定的目標(biāo)文件夾不存在."); } } private static void iterateRename() { String aviName = null; String tempStr = null; StringBuilder strBuilder = new StringBuilder(); File tempFile = null; String sequenceNumber = null; String detailName = null; // 遍歷list集合,逐個(gè)進(jìn)行重命名 for (File each : RenameFiles.srcFiles) { aviName = each.getName().substring(0, each.getName().length() - 4); // 獲取文件名稱(除去后綴名".avi") tempStr = each.getParent(); // 父文件夾的名稱 sequenceNumber = String.format("%02d", Integer.valueOf(aviName)); // 兩位的序號(hào),不足兩位用0補(bǔ)齊,例如:01 detailName = tempStr.substring(tempStr.lastIndexOf("_") + 1); // 視頻文件的詳細(xì)內(nèi)容,例如:傳統(tǒng)線程互斥技術(shù) strBuilder.append(sequenceNumber + "_" + detailName + ".avi"); tempFile = new File(RenameFiles.destFolder, strBuilder.toString()); // 新文件的path // each.renameTo(tempFile);//核心代碼(實(shí)現(xiàn)重命名和移動(dòng)) System.out.println(tempFile.toString()); // 打印到控制臺(tái)以便調(diào)試 strBuilder.delete(0, strBuilder.length()); // 切記將strBuilder進(jìn)行清空 } // end foreach } // end method-iterateRename private static void iterateGetFiles(File srcFile) { // 如果是文件夾,就繼續(xù)深入遍歷 if (srcFile.isDirectory()) { File[] files = srcFile.listFiles(); for (File each : files) { iterateGetFiles(each); } } else if (srcFile.getAbsolutePath().endsWith(".avi")) { // 不是文件夾而且文件格式為avi,就將該文件添加到待命名文件的list集合中 RenameFiles.srcFiles.add(srcFile); } } // end method-iterateGetFiles } // end class-RenameFiles
part_4:重命名及移動(dòng)后的效果:
E:\BaiduYun\張孝祥_Java多線程與并發(fā)庫
總結(jié)
以上就是本文關(guān)于java文件的重命名與移動(dòng)操作實(shí)例代碼的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較
比較對(duì)象是面向?qū)ο缶幊陶Z言的一個(gè)基本特征,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02MyBatis-Plus中MetaObjectHandler沒生效完美解決
在進(jìn)行測試時(shí)發(fā)現(xiàn)配置的MyMetaObjectHandler并沒有生效,本文主要介紹了MyBatis-Plus中MetaObjectHandler沒生效完美解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11Java中數(shù)據(jù)庫常用的兩把鎖之樂觀鎖和悲觀鎖
這篇文章主要介紹了數(shù)據(jù)庫常用的兩把鎖之樂觀鎖和悲觀鎖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07mybatis-plus內(nèi)置雪花算法主鍵重復(fù)問題解決
本文主要介紹了mybatis-plus內(nèi)置雪花算法主鍵重復(fù)問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09Spring Security 自定義短信登錄認(rèn)證的實(shí)現(xiàn)
這篇文章主要介紹了Spring Security 自定義短信登錄認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Springboot應(yīng)用gradle?Plugin示例詳解
這篇文章主要介紹了Springboot應(yīng)用gradle?Plugin詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04將一個(gè)數(shù)組按照固定大小進(jìn)行拆分成數(shù)組的方法
下面小編就為大家?guī)硪黄獙⒁粋€(gè)數(shù)組按照固定大小進(jìn)行拆分成數(shù)組的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11