本帖最后由 小风0010 于 2023-8-20 19:10 编辑
最近在网上下载了一份资料,准备好好学习一下,但是发现 附带的视频和笔记以及代码 的文件名都被加上了 某某论坛的名字和地址 ,
视频倒还好,文件名不影响播放,
但是篡改文件名会导致资料中的markdown文档上的图片不能正常加载,很烦,而且项目代码中的配置文件也不能正常使用,
于是就随便写了段代码,去除文件名中的 某论坛的名字和地址 ,
下载下来打开文件夹的时候是这样的(这里只是模拟一下当时的情况,案例中的某论坛的名字和地址我自己假设的)
doc目录下也是一堆被篡改了文件名的文件
看着就很烦,无良的垃圾论坛,于是我就在想干脆直接把整个目录下的文件名处理一下
大致的思路就是获取指定目录下的文件和子目录,如果是文加就直接重命名,如果是子目录就往下递归
代码实现如下:
[Asm] 纯文本查看 复制代码 /**
*
* @Param file 目录的抽象
* @param stupidForum 傻逼论坛的论坛地址,也就是文件名中待替换的值
* @param replaceValue 替换的值,这里我是直接替换成空字符串,也就是相当于恢复了原来的文件名
*/
public static void renameStupidForumFileName(String filePath, String stupidForum, String replaceValue) {
File file = new File(filePath);
File[] files = file.listFiles();
//遍历操作
int count = 0;
Iterator<File> iterator = Arrays.stream(files).iterator();
while (iterator.hasNext()){
File subdirectory = iterator.next();
// 判断是文件还是子目录
if (subdirectory.isDirectory()) {
//子目录继续递归
renameStupidForumFileName(subdirectory, stupidForum, replaceValue);
} else {
//获取文件名
String fileName = subdirectory.getName();
//判断文件名中是否包含了 stupidForum
if (fileName.contains(stupidForum)) {
String newName = subdirectory.getParent() + File.separator + fileName.replace(stupidForum, replaceValue);
subdirectory.renameTo(new File(newName));
count++;
}
}
}
System.out.println("成功处理: "+ count +" 个文件");
}
处理完成后效果如下:
|