之前在网上下载了很多视频,解压缩后,发现里面每个文件前面都有一长串的网址,导致我根本看不清每个视频的名字到底叫什么?

网上搜了一些批量重命名的方法,可都不是我想要的,既然这样,干脆自己动手用Java写一个吧。测了一下应该没问题,现在分享出来。

先上代码:

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry; /**
* 重命名规则类
* @author jack
*/
class ReplacementChain{
private Map<String,String> map; public ReplacementChain() {
this.map = new HashMap<String, String>();
} public Map<String, String> getMap() {
return map;
} // 添加新的替换规则(字符串替换)
public ReplacementChain addRegulation(String oldStr , String newStr){
this.map.put(oldStr, newStr);
return this;
} } /**
* 重命名类
* @author Jack
*/
public class Rename { /**
* 批量重命名
* @param path
* @param replacementChain
*/
public static void multiRename(String path,ReplacementChain replacementChain){
File file = new File(path);
boolean isDirectory = file.isDirectory(); /** 如果不是文件夹,就返回* */
if(!isDirectory){
System.out.println(path + "不是一个文件夹!");
return;
} String[] files = file.list();
File f = null;
String filename = "";
String oldFileName = ""; //之前的名字
/** 循环遍历所有文件* */
for(String fileName : files){
oldFileName = fileName;
Map<String, String> map = replacementChain.getMap();
for (Entry<String, String> entry : map.entrySet()) {
fileName = fileName.replace(entry.getKey(), entry.getValue());
} f = new File(path + "\\" + oldFileName); //输出地址和原路径保持一致
f.renameTo(new File(path + "\\" + fileName));
}
System.out.println("恭喜,批量重命名成功!");
} public static void main(String[] args) { }
}

使用方法:

假如我现在有一个文件夹,里面有若干个txt文件,都有一个很长的前缀和后缀。

现在我希望把它们的前缀都去掉;

第一步,在main方法里面新建一个 ReplacementChain 类的实例,这是一个规则类。主要就是设置一些替换规则。
ReplacementChain replacementChain = new ReplacementChain();

第二步,新增替换规则

第一个文件的全名:

【我是一个好长好长的前缀哦】~~~~~ 小说001(我是萌萌的小尾巴).txt

我们希望把【我是一个好长好长的前缀哦】~~~~~ 和 (我是萌萌的小尾巴) 去掉,只需要在replacementChain上面添加两个替换规则即可。

replacementChain.addRegulation("【我是一个好长好长的前缀哦】~~~~~", "").addRegulation("(我是萌萌的小尾巴)", "");

addRegulation支持链式调用。

第三步,调用批量重命名方法

Rename.multiRename("F:\\测试文件夹", replacementChain);

传两个参数,第一个是需要批量处理的文件所在的文件夹路径,第二个就是 replacementChain 对象。

运行

控制台如果打印出: 恭喜,批量重命名成功!

那么就说明成功了。

我本地的那些文件已经被批量重命名了:

Java 实现批量重命名,亲测可用(精简版)的更多相关文章

  1. Java 实现文件批量重命名亲测可用(精简版)

    package com.cmge.utils; import java.io.*; import java.util.*; import java.util.Map.Entry; import com ...

  2. Java进行数据库导出导入 亲测可用

    /** * @param hostIP ip地址,可以是本机也可以是远程 * @param userName 数据库的用户名 * @param password 数据库的密码 * @param sav ...

  3. Xshell6,亲测可用~破解版简单解压免安装~已更新官方版本安装方法

    下面的内容别看了,使用这个最新的安装官方版本 https://www.cnblogs.com/taopanfeng/p/11671727.html 下面的内容别看了,使用这个最新的安装官方版本 htt ...

  4. Java实现文件批量重命名

    Windows操作系统可以实现重命名文件操作,却不能实现批量重命名.本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名.用户可以给出重命名模板,程序可以根据模板对相应 ...

  5. 平衡二叉树 JAVA实现 亲测可用

    平衡二叉树的JAVA实现 亲测可用 包括LL LR RL RR四种情况的旋转算法 以及添加删除树结点之后对平衡二叉树的维护算法 都已经实现并测试过 没有问题. 代码地址可以直接上我的GIT clone ...

  6. java IO 文件批量重命名

    java IO 文件批量重命名 package com.vfsd.renamefile; import java.io.File; import java.io.FileInputStream; im ...

  7. 使用java对文件批量重命名

    有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如 ...

  8. linux下rename用法--批量重命名

    Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了, 由于历史原因,在Perl语言 ...

  9. IntelliJ IDEA2017 激活方法 最新的(亲测可用)

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...

随机推荐

  1. 让IE6/IE7/IE8浏览器支持CSS3属性

    让IE6/IE7/IE8浏览器支持CSS3属性 一.下载 您可以狠狠地点击这里:ie-css3.htc,这个玩意儿是让IE浏览器支持CSS3表现的关键东东. 二.上面的是什么东西 首先说说.htc文件 ...

  2. 完美解决 Linux 下 Sublime Text 中文输入

    首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sub ...

  3. 简单明了区分escape、encodeURI和encodeURIComponent

    一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种 ...

  4. 使用shell/python获取hostname/fqdn释疑

    一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...

  5. String驻留带来的危害

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   前段时间接手了一个项目优化工作,在同等场景下内存使用从4G降低到200M.   项目是将实体序列化成字符串存入 ...

  6. 我只是想开个饭店—— JavaIO模型的演变

    Java的IO...真的是我所见过的高级语言中.最最复杂的... 看着这个图我也是醉了. 但是不知不觉间,java的IO已经更新到了NIO.2了,IO库早已经不止是这个样子了,那么这个过程中,它们经历 ...

  7. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  8. 部分安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法

    前端JS中使用XMLHttpRequest 2上传图片到服务器,PC端和大部分手机上都正常,但在少部分安卓手机上上传失败,服务器上查看图片,显示字节数为0.下面是上传图片的核心代码: HTML < ...

  9. VS2013的 Browser Link 引起的问题

    环境:vs2013 问题:在调用一个WebApi的时候出现了错误: 于是我用Fiddler 4直接调用这个WebApi,状态码是200(正常的),JSon里却提示在位置9409处文本非法, 以Text ...

  10. C# Azure 存储-分布式缓存Redis在session中的配置

    1. 开始 对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知 ...