递归遍历替换文件夹名称及文件名称

1、递归遍历文件夹及子文件
2、替换文件夹及文件名称
上代码:

   private static String TEMPLATE_STR = "account-service";
    /**
     * 递归遍历文件夹,并替换文件夹及文件的名称
     *
     * @param path        遍历文件夹的起始位置
     * @param newPathName 新文件夹或新文件的名称
     */
    public void foreachAndReplaceFolder(String path, String newPathName) {
        File folder = new File(path);
        if (!folder.exists()) {
            log.info("文件不存在! path=" + path);
            return;
        }
        File[] fileArr = folder.listFiles();
        if (null == fileArr || fileArr.length == 0) {
            log.info("文件夹是空的! path=" + path);
            return;
        }

        for (File file : fileArr) {
            //若是文件夹,替换文件夹,
            if (file.isDirectory()) {
                //判断文件夹是否包含指定字符串,
                if (file.getName().contains(TEMPLATE_STR)) {
                    log.info("替换旧文件夹:{}", file.getName());
                    String newFilePath = file.getParent() + System.getProperty("file.separator") + file.getName().replaceAll(TEMPLATE_STR, newPathName);
                    file.renameTo(new File(newFilePath));
                    foreachAndReplaceFolder(newFilePath, newPathName);
                } else {
                    //不包含,继续递归
                    foreachAndReplaceFolder(file.getAbsolutePath(), newPathName);
                }
            } else {
                //是文件,判断文件名称是否包含指定字符串,
                if (file.getName().contains(TEMPLATE_STR)) {
                    String newFilePath = file.getParent() + System.getProperty("file.separator") + file.getName().replaceAll(TEMPLATE_STR, newPathName);
                    file.renameTo(new File(newFilePath));
                    log.info("替换旧文件:" + file.getName());
                }
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容