java文件的重命名与移动操作实例代码
作者:_MIKE_SUN_ 发布时间:2022-06-16 04:18:12
标签:java,文件重命名,文件移动
文件的重命名与移动操作
有时候为了对文件进行统一访问与管理,需要把文件进行重命名,并移动到新的文件夹,如何实现呢?
一枚简单的java小程序即可实现:
part_1:需求:我需要把<(E:\BaiduYun\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载)>文件夹下的所有子文件夹下的视频文件重命名,并移动到新的位置<(E:\BaiduYun\张孝祥_Java多线程与并发库)>;
part_2:目录结构如下:
E:\BaiduYun
E:\BaiduYun\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载
E:\BaiduYun\传智播客张孝祥_Java多线程与并发库高级应用视频教程下载\01传智播客张孝祥传统线程技术回顾
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 该程序实现文件的重命名与移动操作;
*/
public class RenameFiles {
private static File srcFolder;
// 源文件夹
private static File destFolder;
// 目的文件夹
private static List<File> srcFiles;
// 存放所有待命名的文件
static {
srcFolder = new File("E:\\BaiduYun\\传智播客_张孝祥_Java多线程与并发库高级应用视频教程下载");
destFolder = new File("E:\\BaiduYun\\张孝祥_Java多线程与并发库");
srcFiles = new ArrayList<File>();
}
public static void main(String[] args) {
// 对文件夹的合法性(是否存在)进行校验
try {
checkFolder();
}
catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
// 遍历源文件夹把要修改的文件放到集合中
iterateGetFiles(RenameFiles.srcFolder);
// 对集合中的元素进行重命名(并移动到目标文件夹)
iterateRename();
}
// end method-main
private static void checkFolder() throws FileNotFoundException {
if (!RenameFiles.srcFolder.exists()) {
throw new FileNotFoundException("指定的源文件夹不存在.");
}
if (!RenameFiles.destFolder.exists()) {
throw new FileNotFoundException("指定的目标文件夹不存在.");
}
}
private static void iterateRename() {
String aviName = null;
String tempStr = null;
StringBuilder strBuilder = new StringBuilder();
File tempFile = null;
String sequenceNumber = null;
String detailName = null;
// 遍历list集合,逐个进行重命名
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));
// 两位的序号,不足两位用0补齐,例如:01
detailName = tempStr.substring(tempStr.lastIndexOf("_") + 1);
// 视频文件的详细内容,例如:传统线程互斥技术
strBuilder.append(sequenceNumber + "_" + detailName + ".avi");
tempFile = new File(RenameFiles.destFolder, strBuilder.toString());
// 新文件的path
// each.renameTo(tempFile);//核心代码(实现重命名和移动)
System.out.println(tempFile.toString());
// 打印到控制台以便调试
strBuilder.delete(0, strBuilder.length());
// 切记将strBuilder进行清空
}
// end foreach
}
// end method-iterateRename
private static void iterateGetFiles(File srcFile) {
// 如果是文件夹,就继续深入遍历
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:重命名及移动后的效果:
E:\BaiduYun\张孝祥_Java多线程与并发库
来源:http://blog.csdn.net/love_legain/article/details/54972387


猜你喜欢
- 定义单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。简单来说,就是针
- 今天在编译Java程序时遇到如下问题:No enclosing instance of type PrintListFromTailToHe
- 故事背景故事发生在几个星期前,自动化平台代码开放给整个测试团队以后,越来越多的同事开始探索平台代码。为了保障自动化测试相关的数据和沉淀能不被
- 最近 * 丝的公司想要为以前的那个网页产品加上一个过滤的功能,废话不多说,直接看筛选的界面是啥样的吧:可以看出,我们的Message分为Crit
- Get请求1.简单发送Get请求/// <summary>/// 指定Url地址使用Get 方式获取全部字符串/// </
- 这篇文章主要介绍了Mybatis模糊查询及自动映射实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 两张表SystemParam(系统参数表) Suit (主题)SystemParam 与 Suit 是多对一Suit 的higerSuit字
- 本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本。当时安装会因为
- 现在一些app通常会在头部放一个广告位,底部放置一行小圆圈指示器,指示广告位当前的页码,轮播展示一些图片,这些图片来自于网络。这个广告位ba
- 在网上虽然看到了方法,但是处理感觉很复杂,我的办法,老实说,是突然试一下试到的,哈哈QWQOK,开始说明如何整的。效果如上图所示代码如下pa
- 错误内容:com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis
- 有时我们可能会遇到下图这样一种情况 — 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯
- 对于一个App的UI而言,在流畅性上的改进目标其实就是降低屏幕绘制的延迟,创建流畅和稳定的帧率以避免卡顿。在理想情况下,全部的测量、布局和绘
- 1. 源码阅读环境搭建ide:IntelliJ IDEA 2020.1包管理:gradleeureka版本:1.10.11Spring Cl
- TabLayout+ViewPager实现tab和页面联动效果xml中:<?xml version="1.0" e
- 本文实例讲述了C#画笔Pen绘制光滑模式曲线的方法。分享给大家供大家参考。具体实现方法如下:using System;using Syste
- 此问题背景产生于近期需要上线的一个功能的埋点;主要表现就是在应用启动之后的一段时间内,内存使用一直呈现递增趋势。下图为场景复线后,本地通过
- 前言J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。j
- 1:gc日志输出在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimes
- 前端时间刚好需要做一个类似于QQ空间的社区分享功能,说说内容包含文字(话题、内容)、视频、图片,还需包含点赞,评论,位置信息等功能。 就采用