背景:公司要求使用PADS完成原理图设计、PCB Layout。而他硬件工程师要求我在将PADS的库文件发送给他们之前,必须在每一个库文件的后面追加今天的日期,再发送给他们。

问题来了,如果一次需要发送多个库文件,那我就得修改很多个库文件的名字,这个过程十分繁琐枯燥、费时费力。

于是,我想:能不能使用Java语言设计一个程序,用于批量修改某个文件夹里面的文件的名字呢?

答案是肯定的。于是,趁着今天周末有空,动动脑子和手,解决这些问题。

修改前的文件名:

程序

 import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; public class IOFileTest { public static void main(String[] args) {
// 日期格式,例如:20190331
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); // 指定路径
File filepath = new File("E:/PADS/Libraries/temp"); // 列出该路径下所有文件
File[] originalfiles = filepath.listFiles();
for (int i = 0; i < originalfiles.length; i++) {
System.out.println(dateFormat.format(new Date())); // 获取父目录
String parentDirectory = originalfiles[i].getParent(); StringBuilder stringBuilder = new StringBuilder(originalfiles[i].getName());
// 搜索".",因为"."之后文件的后缀名,将要追加的字符串是添加在后缀名前面的
int index = stringBuilder.lastIndexOf(".");
// 在后缀名前面插入今天的日期
stringBuilder.insert(index, "_" + dateFormat.format(new Date())); // 重命名文件
File newFile = new File(parentDirectory + File.separator + stringBuilder);
if (originalfiles[i].renameTo(newFile)) {
System.out.println("The original file is " + originalfiles[i].getName());
System.out.println("The new file is " + newFile.getName());
System.out.println();
} else {
System.out.println("Fail!");
}
}
}
}

运行结果(修改后的文件名):

例2:基于JavaFX实现UI界面:

 import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.GridPane;
import javafx.stage.DirectoryChooser;
import javafx.util.Duration;
import javafx.stage.Stage; public class Main extends Application {
File directory = null; public static void main(String[] args) {
launch(args);
} @Override
public void start(Stage primaryStage) throws Exception {
// Create a pane to hold a button
GridPane pane = new GridPane();
pane.setStyle("-fx-border-color: green;");
pane.setAlignment(Pos.CENTER);
pane.setPadding(new Insets(10, 10, 10, 10));
pane.setHgap(10);
pane.setVgap(10); // Label
Label labelInformation = new Label("Waiting..."); // Text Field
TextField tfDirectory = new TextField();
tfDirectory.setPrefColumnCount(40);
tfDirectory.setTooltip(new Tooltip("Select a directory.")); // Create a button to choose a directory
Button btChooseDirectory = new Button("Choose Folder"); // Create a button to start...
Button btStartTranslation = new Button("Start Modify"); // Add all node to the pane.
pane.add(tfDirectory, 0, 0);
pane.add(btChooseDirectory, 1, 0);
pane.add(labelInformation, 0, 1);
pane.add(btStartTranslation, 1, 1); // Set the date format
DateFormat df = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
// Update the time
Timeline animation = new Timeline(new KeyFrame(Duration.millis(1000), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.setTitle("Rename File " + df.format(new Date()));
}
}));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play(); // Set the primary stage properties
primaryStage.setScene(new Scene(pane));
primaryStage.setTitle("Rename File " + df.format(new Date()));
primaryStage.setResizable(false);
primaryStage.show(); // Event Handler
btChooseDirectory.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setTitle("Choose Folder");
directory = directoryChooser.showDialog(new Stage());
if (directory != null) {
tfDirectory.setText(directory.getAbsolutePath());
System.out.println(directory.getAbsolutePath());
}
}
}); btStartTranslation.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (directory != null) {
labelInformation.setText("Start renaming all files...");
System.out.println("Start renaming all files...");
long t1 = System.currentTimeMillis();
// Date format
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmm");
// List out all files in the directory
File[] originalfiles = directory.listFiles();
for (int i = 0; i < originalfiles.length; i++) {
// List the files which with extension ".ld9", ".ln9", ".pd9", ".pt9"
if ((originalfiles[i].getName().endsWith(".ld9"))
| (originalfiles[i].getName().endsWith(".ln9"))
| (originalfiles[i].getName().endsWith(".pd9"))
| (originalfiles[i].getName().endsWith(".pt9"))) {
StringBuilder stringBuilder = new StringBuilder(originalfiles[i].getName());
stringBuilder.insert(stringBuilder.lastIndexOf("."), "_" + dateFormat.format(new Date())); // Rename files
File newFileName = new File(directory.getAbsolutePath() + File.separator + stringBuilder);
if (originalfiles[i].renameTo(newFileName)) {
System.out.println("The original file name is " + originalfiles[i].getName());
System.out.println("The new file name is " + newFileName.getName());
System.out.println();
} else {
System.out.println("Failed to rename " + originalfiles[i].getName());
}
}
}
long t2 = System.currentTimeMillis();
labelInformation.setText("Rename completed. Elapsed time: " + (t2 - t1) + " ms");
System.out.println("Rename completed. Elapsed time: " + (t2 - t1) + " ms");
} else {
labelInformation.setText("Please choose a directory first.");
System.out.println("Please choose a directory first.");
}
}
});
}
}

Java 批量修改文件夹里面的文件的名字的更多相关文章

  1. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  2. Linux 批量查找并替换文件夹下所有文件的内容

    1.批量查找某个目下文件的包含的内容 cd etc grep -rn "查找的内容" ./ 2.批量替换某个目下所有包含的文件的内容 cd etc sed -i "s/查 ...

  3. java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面

    将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...

  4. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  5. Linux如何修改文件/文件夹内所有文件的权限

    一.修改文件权限 修改文件权限前,需要了解一下权限中的”rwx”与数字的对应关系,其中r=4,w=2,x=1. 例如:”drwxr-xr-x”,第一个”d”是代表文件夹,这里不用考虑,后面九个字符,每 ...

  6. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件; import java.io.File; public class Test { public ...

  7. java实现将指定文件夹里所有文件路径输出到指定文件作为参数化文件给lr脚本使用

    java实现将指定文件夹里所有文件路径输出到指定文件作为参数化文件给lr脚本使用 import java.io.BufferedReader; import java.io.BufferedWrite ...

  8. C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

    https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new Ope ...

  9. 批量生成文件夹内所有文件md5

    说明:md5批量生成批处理脚本,无需安装任何软件,直接调用系统文件进行生成,简单基于windows命令编写了一个批量生成md5值的脚本. 使用说明:新建文本文档,命名为get_md5.bat,直接将代 ...

随机推荐

  1. YApi二次开发环境部署

    YApi 是去哪儿网大前端技术中心开源的一个可视化的接口管理平台.下面是在CentOS7下搭建二次开发环境步骤. 1 安装MongoDB 具体安装参考CentOS7安装MongoDB 2 安装Node ...

  2. 【THUSC2017】【LOJ2981】如果奇迹有颜色 DP BM 打表 线性递推

    题目大意 有一个 \(n\) 个点的环,你要用 \(m\) 中颜色染这 \(n\) 个点. 要求连续 \(m\) 个点的颜色不能是 $1 \sim m $ 的排列. 两种环相同当且仅当这两个环可以在旋 ...

  3. MySQL数据库开发的三十六条军规

    一.核心军规 尽量不在数据库做运算,cpu计算的事务必移至业务层; 控制表.行.列数量([控制单张表的数据量 1年/500W条,超出可做分表],[单库表数据量不超过300张] .[单张表的字段个数不超 ...

  4. 简单记录一次getshell到进服务器的过程

    通过st2命令执行上次木马进行getshell 查看whoami,发现权限是administrator,直接net user xxx xxx123.. /add,发现拒绝访问 通过命令tasklist ...

  5. crontab语法

    *           *        *        *        *           command minute   hour    day   month   week       ...

  6. APP 后台学习笔记

    1.APP后台功能: 远程存储数据.消息中转 2.架构是业务驱动,可能随着开发进程而变化,没有最完美架构 3.架构不要满足追求技术新奇酷炫,而是结合具体业务使用合适的技术,否则会给运维带来很多不必要的 ...

  7. Numpy的学习

    Numpy numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算.这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展 ...

  8. python13 1.函数的嵌套定义 2.global、nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器

    ## 复习   '''1.函数对象:函数名 => 存放的是函数的内存地址1)函数名 - 找到的是函数的内存地址2)函数名() - 调用函数 => 函数的返回值  eg:fn()() =&g ...

  9. SVN状态说明

    svn status查看工作副本中目录与文件的状态 命令格式:svn status [PATH](简写:svn st) 打印工作拷贝中文件和目录的状态. svn st|grep ^状态(获得某状态文件 ...

  10. 策略模式-Strategy(Java实现)

    策略模式-Strategy 在策略模式中,一个类(策略使用者)可以更改自己的执行策略. 比如以排序算法为例子, 多种排序算法都归属于排序算法, 但是实现的算法细节不同, 使用者可以很轻松地替换策略, ...