小风0010 发表于 2023-8-20 19:05

重命名目录以及子目录下的文件名

本帖最后由 小风0010 于 2023-8-20 19:10 编辑



             最近在网上下载了一份资料,准备好好学习一下,但是发现 附带的视频和笔记以及代码 的文件名都被加上了 某某论坛的名字和地址 ,
            视频倒还好,文件名不影响播放,
             但是篡改文件名会导致资料中的markdown文档上的图片不能正常加载,很烦,而且项目代码中的配置文件也不能正常使用,
            于是就随便写了段代码,去除文件名中的 某论坛的名字和地址 ,
            
            下载下来打开文件夹的时候是这样的(这里只是模拟一下当时的情况,案例中的某论坛的名字和地址我自己假设的)


         
          doc目录下也是一堆被篡改了文件名的文件
               
                看着就很烦,无良的垃圾论坛,于是我就在想干脆直接把整个目录下的文件名处理一下
         大致的思路就是获取指定目录下的文件和子目录,如果是文加就直接重命名,如果是子目录就往下递归
            代码实现如下:
    /**
   *
   * @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 +" 个文件");
    }


处理完成后效果如下:


                        






青春作伴 发表于 2023-8-20 19:20

有技术就是想亲历亲为,现成的工具其实也很多

dtsuifeng 发表于 2023-8-20 22:39

自动动手解决问题就是好。

爬爬虾 发表于 2023-8-21 20:26

我一遇到问题就总是想着去找工具{:1_907:}

martn 发表于 2023-9-16 22:03

看看先,多谢!!!!!!!
页: [1]
查看完整版本: 重命名目录以及子目录下的文件名