用Java对文件进行重命名_请叫我益达张的博客-程序员宅基地

技术标签: Java  java  重命名文件  

昨天闲来无事,对磁盘进行了整理。当整理到F盘(放的都是电影之类的)时发现好多电影文件名字前面都有一些标识,我经常在电影天堂上下载电影,所以下载的电影名前面都会有[电影天堂www.dy2018.com]、[电影天堂www.dy2018.net]等字样,感觉很不爽。于是我就想把这些字样去掉,可是程序猿都有一些懒,我也不例外,那么多懒得一个个删除,又懒得去网上找那些批量修改文件名的软件,就想到写个程序。于是,我就开始敲代码了。

首先分析文件名:

通过比较发现都是类似“[电影天堂www.dy2018.com]”的样式,大多数文件名中电影天堂的标识是在开头,有一部分是在最后(也就是文件扩展名之前)。而且在标识前后有的有一个“."字符来分割文件名和标识。

举例说明:

[电影天堂www.dy2018.com]活在当下.720p.BD中英双字幕.rmvb
[电影天堂www.dy2018.com].活在当下.720p.BD中英双字幕.rmvb
活在当下.720p.BD中英双字幕.[电影天堂www.dy2018.com].rmvb

写程序时多考虑了一下,比如说标识在文件名中间(活在当下.720p.[电影天堂www.dy2018.com].BD中英双字幕.rmvb)。

通过以上分析,发现标识都包含dy2018字样,标识前后有字符点。

解决思路:

获取文件名,判断是否含有dy2018标识,截取”[“之前和”]“之后的字符串,并拼接成一个新的文件名

代码如下:

import java.io.File;

public class ClearDy2018 {

    public static void main(String[] args) {
        File file = new File("F://");
        File files[] = file.listFiles();
        for(File f : files) {
            if(f.isFile()) {//获取F盘下的所有文件(我的电影全在根目录下)
                if(f.getName().matches("\\S*dy2018\\S*")) {//正则判断是否含有dy2018标识
                    StringBuilder filename = new StringBuilder();
                    int begin = f.getName().indexOf('[');
                    int end = f.getName().indexOf(']');
                    
                    //begin不等于0说明标识不再文件名的开头
                    if(begin!=0) {
                        filename.append(f.getName().substring(0,begin-1));
                    } else {
                        filename.append(f.getName().substring(0,begin));
                    }
                    //此时说明标识在文件名的最后,紧跟着文件扩展名
                    if(end==f.getName().lastIndexOf(".")-1) {
                        //注意此时截取字符串开始索引是end+1,因为‘]’之后的点是跟扩展名一起的。文件名"幕.rmvb"会变成"幕rmvb"
                        filename.append(f.getName().substring(end+1));
                    } else {
                        //这时文件名中会有一个多余的点字符,要去掉
                        filename.append(f.getName().substring(end+2));
                    }

                    //对文件重命名
                    File newFile = new File(f.getParent()+File.separator+filename.toString());
                    f.renameTo(newFile);
                    System.out.println(f.getName()+"==>"+newFile.getName());//输出文件改名前后变化
                }
            }
        }
    }
}




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zyh5540/article/details/18770839

智能推荐

分享几张数据分析的思维导图,附下载链接!_数据分析与可视化思维导图_编程鸭的博客-程序员宅基地

摘要在做数据分析的过程中,经常会想数据分析到底是什么?为什么要做数据数据分析?数据分析到底该怎么做?等这些问题。对于这些问题,一开始也只是有个很笼统的认识。最近这两天,读了一下早就被很多人推荐的《谁说菜鸟不会数据分析》这本书。发现对这些问题讲的还是比较透彻,随后宝器对这本书的核心内容做了一个笔记。如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!...

springBoot引入knife4j jar包项目启动报错_彭白鱼的博客-程序员宅基地

springBoot引入knife4j jar包后项目启动报错:Failed to start bean 'documentationPluginsBootstrapper'Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException这种一般都是springboot版本过高导致可以更换版本到2.4项目就可以启动了<p.

Ubuntu开机自动挂载硬盘ntfs分区_stlinax的博客-程序员宅基地

sudo mkdir /media/Esudo chmod -R 777 /media/E获取要自动挂载的分区的UUID和分区类型TYPEsudo blkid /dev/sda3: UUID=”000F70A100099B09″ TYPE=”ntfs” 试一下,看看能否挂载到 /media/E sudo mount -t ntfs /dev/sda3 /media/E 挂载成功的话,就编辑/etc...

乐学python_铁乐学python_shelve模块详解_High莹的博客-程序员宅基地

python序列化模块-shelve模块详解shelve:vt. 将(书等)放置在架子上;搁置,将某事放到一旁不予考虑;将…搁在一边;装搁架于;个人感觉有点像字典缓存?暂时搁置到一旁的意思?研究了一段时间后,感觉它就是当成了一种临时的数据库(dbm)缓存文件来用的感觉。为什么用shelve?(特别是在已有json和pickle的情况下)使用json或者pickle持久化数据,能dump多次,但lo...

git常用命令总结_chen_晨风的博客-程序员宅基地

目录创建步骤git 基本命令git 结构git 状态git 撤销操作git 文件删除git 分支1.git分支的创建、修改、切换、删除2.git分支的合并3.存储变更4.远程仓库git 打包创建步骤1.右键点击文件夹--> git bash here2.git init初始化...

adas记录仪app_小蚁行车记录仪app_杀死朽木的博客-程序员宅基地

记录app仪怎么连接手机?安装简便随时可在手机上查看,高清画质为你展现你的精彩一天,有需要的朋友赶紧来2265安卓网下载使用吧!!!小蚁行车记录仪软件简介:小蚁行车记录仪app是配合智能行车记录仪设备使用的手机软件。APP通过Wi-Fi连接行车记录仪,轻松实现实时预览、录像回看、精彩分享、高级设置等功能。小蚁行车记录仪app官网特色:- 165°广角超人眼细节画质- 2倍视野轻松目测3车道路况- ...

随便推点

webrtc封装sdk(四)使用swig生成跨平台的api_我是榜样的博客-程序员宅基地

##如何发布我们的sdk?当我们封装好了webrtc sdk后,建议使用swig处理c++头文件,来生成objc,java平台的api。##为何推荐使用swig使用swig的好处是当我们修改了c++接口后,只需要执行生成脚本,就可以更新objc和java类。不需手动修改,减少了工作量。我们仅需手动维护一份c++实现即可,对于android/IOS/MacOS平台的支持完全利用swig去支...

线程不安全SimpleDateFormat的替换方案DateFormatUtils、DateUtils_dateformatutils 的优缺点_程序员庖丁解牛的博客-程序员宅基地

1、最近生产环境遇到了一个问题:会员查询接口,会员返回的开始时间竟然比过期时间大。vipStart=2018-08-07 18:37:28 vipEnd=2018-08-05 13:29:542、会员的开始时间是根据会员的过期时间来计算的(往前推31天)查看系统日志,排除了数据库、代码的计算可能性后,决定用2018-08-07 18:37:28去查询一下日志,是否是线程切换造成的。后面查询到了一个...

艺金汇文化和渔米链集团达成战略合作 共建NFR数字藏品交易平台_渔米有约的博客-程序员宅基地

艺金汇文化和渔米链集团达成战略合作 共建NFR数字藏品交易平台

实验4 | DPCM编码_weixin_48462511的博客-程序员宅基地

一、实验目的1、掌握DPCM编解码系统的基本原理。2、初步掌握实验用C/C++/Python等语言编程实现DPCM 编码器,并分析其压缩效率。二、实验内容1.DPCM编解码原理DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中, 预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本,因此在DPCM编码器中实际内嵌了一个解码器。在一个DPCM系统中,需要设计预测器和量化器。理想情况下,预测器和量化器应进行联

MxNet+R︱用R语言实现深度学习_yepeng2007fei的博客-程序员宅基地

转载http://blog.csdn.net/sinat_26917383/article/details/53762185“素质云博客”MxNet有了亚马逊站台之后,声势大涨,加之接口多样化,又支持R语言所以一定要学一下。而且作为R语言的fans,为啥咱们R语言就不能上深度学习嘞~——————————————————————————————一、

推荐文章

热门文章

相关标签