用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());//输出文件改名前后变化
                }
            }
        }
    }
}




用Java对文件进行重命名

上一篇:java生成横竖字图片


下一篇:UVa11400 Lighting System Design