本文仅为日常记录,操作记录,方便后期使用查找

背景:

本地电脑文件太多了,又不想一个一个重命名,改名字什么的很麻烦。使用文件夹名称+文件名称作为新的文件名,其他重命名可按需要修改。

先要达到效果:文件夹名称+文件名作为新的文件名称。

读取文件夹和文件信息:

        File dirFile = new File(filepath);
//            当前路径下的所有文件夹、文件存放到一个文件数组System.out.println(Dir(dirFile));//获取文件路径存放到一个数据中 文件绝对路径DirAll(dirFile);

获取文件信息:

File f = new File(s);
String folder_Fullname = f.getParent();
String folder_name = folder_Fullname.substring(folder_Fullname.lastIndexOf("\\") + 1);
//修改文件名称 新文件名称规则:上一级目录名称+文件名称
//获取文件名称 文件名称 后缀名
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);//修改名称后新文件名称(上一级目录名称+文件名称)    新文件路径
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 + ",扩展名 file_lastname:" + file_lastname);
System.out.println("新文件名称 file_newName:" + file_newName);
System.out.println("新文件完整路径 file_newFullName:" + file_newFullName);

重命名-修改文件名称

//开始重命名 修改文件名称 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 + "]修改失败");
}

执行结果:

完整代码:

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);//验证改名是否成功获取所有文件名称testGetfilename2(filepath);System.out.println(renameInfo);useTime(start);//耗时}//读取指定目录下文件信息 包含文件名称 文件路径private static String readFilepathInfo (String filepath) {File dirFile = new File(filepath);
//            当前路径下的所有文件夹、文件存放到一个文件数组System.out.println(Dir(dirFile));//获取文件路径存放到一个数据中 文件绝对路径DirAll(dirFile);System.out.println(dirAllStrArr);//记录成功失败数量int s_num = 0;int e_num = 0;//解析数组获取所有文件的路径System.out.println("=============解析数组获取所有文件的路径====================");
//        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);//修改文件名称 新文件名称规则:上一级目录名称+文件名称//获取文件名称 文件名称 后缀名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);//修改名称后新文件名称(上一级目录名称+文件名称)    新文件路径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 + ",扩展名 file_lastname:" + file_lastname);System.out.println("新文件名称 file_newName:" + file_newName);System.out.println("新文件完整路径 file_newFullName:" + file_newFullName);//控制台输出/*文件完整路径 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),扩展名 file_lastname:txt新文件名称 file_newName:文件523234rrr (4).txt新文件完整路径 file_newFullName:E:\testFilespath\文件5\文件523234rrr (4).txt*///开始重命名 修改文件名称 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 + "条,执行完成!";}// 设置一个全局动态数组,来存放文件路径// 主要遍历文件夹,包含所有子文件夹、文件的情况时,用到递归,所以要这样设置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) {// 如果遇到文件夹则递归调用。if (file.isDirectory()) {// 递归调用DirAll(file);} else {// 如果遇到文件夹则放入数组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()把当前路径下的所有文件夹、文件存放到一个文件数组File[] files = dirFile.listFiles();if (files != null) {for (File file : files) {// 如果传递过来的参数dirFile是以文件分隔符,也就是/或者\结尾,则如此构造if (dirFile.getPath().endsWith(File.separator)) {dirStrArr.add(dirFile.getPath() + file.getName());} else {// 否则,如果没有文件分隔符,则补上一个文件分隔符,再加上文件名,才是路径dirStrArr.add(dirFile.getPath() + File.separator+ file.getName());}}}}return dirStrArr;}//    getAllFileName (String path, ArrayList<String> fileName)是包括当前文件及其子文件的文件名。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);}}}}//计算执行耗时private static void useTime (long start) {long finish = System.currentTimeMillis();long timeElapsed = finish - start;System.out.println("耗时:" + timeElapsed);}
}

java操作文件之文件重命名相关推荐

  1. 文件批量随机重命名的五种方式,分享操作步骤

    在工作中经常会给文件夹进行重命名,但是很多小伙伴不知道该怎么给文件夹进行随机重命名,其实我们在电脑上可以轻松实现多种随机重命名的方式,下面就大家演示. 第一步,运行[文件批量改名高手]在主界面中将功能 ...

  2. 使用bat文件实现批量重命名功能

    在生活中我们总会碰到对大量文件进行重命名操作,这时如果一个一个的,选取文件→右键→重命名→选取文件,这样操作势必会浪费大量时间. 现在小编就告诉大家一个使用bat文件(命令行)的方法,快速对文件进行重 ...

  3. 重命名技巧,支持多个文件夹快速重命名

    你是否还遇到类似的问题?很多的文件夹需要挨个的重命名,比如说有几百个,几千个,那么挨个重命名得费多少时间,下面来试试这个操作,快速批量重命名文件夹,听着还不错,一起来看看. 本次用到的工具是文件批量改 ...

  4. Solidworks使用技巧:文件重命名:在装配体中重命名零部件 在文件夹中重命名文件

    在装配体中重命名零部件: 1. 打开装配体文件后,依照下图红框标示,依次选取 工具→系统选项→FeatureManager→在允许通过FeatureManager设计树重命名零部件文件前打勾: 以上完 ...

  5. Python对文件进行批量重命名

    不管是什么开发语言,用代码操作的最大优势就是可以灵活调整.可批量处理 对于要处理的文件,几千几万的量也是一个回车的事,当然前提是代码不能出BUG 有时候我们下载的一切工具要么收费,要么有各种各样的限制 ...

  6. 电脑文件之批量重命名

    电脑的[文件资源管理器]可以进行简单的重命名操作. 1.CTRL+A全选图片,然后按F2,或者右键菜单[重命名],就会在第一个文件中出现重命名的窗口. 2.重命名,然后回车.   3.接着文件名字就会 ...

  7. Qt之QFtp 在客户端实现文件上传、下载、新建文件夹、重命名、删除和刷新等功能

    简述 本来是打算用新的类QNetworkAccessManager实现的客户端的文件上传.下载.新建文件夹.重命名.删除和刷新等功能,但是QNetworkAccessManager没有提供原本在QFt ...

  8. 电脑文件夹无法重命名怎么办?

    电脑文件夹无法重命名提示被占用怎么办?自己没有打开文件夹,改名总是提示被占用,这是因为当前文件夹已被其它程序占用或打开所造成的,下面我们就来看看详细的解决办法 文件夹不让改名怎么办?我们平时在使用电脑 ...

  9. linux文件自动改名,C#如何在生成文件夹或者文件时候自动重命名

    C#如何在生成文件夹或者文件时候自动重命名 如果你在一个文件夹里面, 连续添加文件夹或者文件(不改名字), 那么系统会自动加上(1),(2),(3)... 这个效果我在网上搜不到, 自己写一下也不太难 ...

  10. python文件重命名加日期_Python文件创建日期和重命名 - 批评请求

    场景:当我拍摄一个物体时,我从多个角度拍摄多张图像.乘以我拍摄的物体数量,我可以生成大量的图像.问题:相机产生的图像标识为'DSCN100001','DSCN100002'等.神秘.Python文件创 ...

最新文章

  1. SAP ECM(Engineering Change Management) 相关表
  2. 破解.net程序 编译和反编译方法
  3. C/C++头文件与变量的声明和定义
  4. linux构建主从域名服务器
  5. 公差基本偏差代号_508/f7:基本偏差怎么查,标准公差又怎么查?
  6. 【Elasticsearch】Elasticsearch 热点线程 hot_threads
  7. meta你到底了解多少
  8. Faster R-CNN 论文笔记
  9. MinGW-w64离线安装包,环境配置(Windows)
  10. 6 设置限速_注意!全国高速将统一限速标志,这四种超速不再扣分罚款!
  11. 【ArcGIS|空间分析】志愿者分配管理区域内共享单车(全国大学生GIS技能大赛试题)
  12. Pytorch tensor基础知识
  13. 键盘 计算机代码,键盘钩子示例
  14. 网络爬虫之手机号测吉凶(纯属娱乐)
  15. IR2104电机驱动
  16. iOS微信分享提示“未验证应用”的解决,配置 Universal Link
  17. 中国农业大学计算机专硕2019分数线,中国农业大学2019考研复试分数线已公布
  18. 原创 | 全网最实在的docker入门教程一
  19. Keil编译器——一些注意的地方
  20. Bootstrap栅栏布局里col-xs-*、col-sm-*、col-md-*、col-lg-*之间的区别及使用方法

热门文章

  1. 【总结】斜杠/和反斜杠\ 的区别
  2. 初创公司股权结构应该怎么设计?举例三种模型
  3. 一定要独立,一定要争气
  4. 最近 Flutter 争气了! Flutter 也可以做这么炫酷的动画
  5. DeFi明斯基时刻:压力测试与启示
  6. (2.0版本)企业微信可信域名,个人添加企业微信可信IP方法
  7. 全面梳理关系型数据库和NoSQL的使用情景
  8. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
  9. 【转】Guide to Elliptic Curve Cryptography(ECC椭圆曲线算法1)
  10. 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】...