一键修改配置文件

简介: import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.Properties;

/**
 * @author: rongyu
 * @Date: 2018-07-23 14:04:29
 */
public class Main {
    /**
     * 配置文件,你需要修改的键值对写入进去
     */
    private static String domainProperties = "A.properties";
    /**
     * 添加文件的备注
     */
    private static String comments = "rongyu";

    private static String projectPath = "E:\\code\\yousesky_hry_code";

    public static void main(String[] args) throws IOException {
        traverseFolder(projectPath);
    }

    public static String getMyProperties(String myProperties) {
        return Main.class.getResource("/").getPath() + myProperties;
    }

    public static Properties getProperties(String propertiesPath) throws IOException {
        FileReader fileReader = new FileReader(propertiesPath);
        Properties properties = new Properties();
        properties.load(fileReader);
        fileReader.close();
        return properties;
    }

    public static Properties transformation(Properties from, Properties to) {
        to.stringPropertyNames().forEach(
                x -> {
                    String value = from.getProperty(x);
                    if (value != null && !"".equals(value))
                        to.setProperty(x, value);
                }
        );
        return to;
    }

    public static void update(String path, String comments) throws IOException {
        String myPropertiesPath = getMyProperties(domainProperties);
        Properties myProperties = getProperties(myPropertiesPath);
        Properties targetProperties = getProperties(path);
        Properties transProperties = transformation(myProperties, targetProperties);
        transProperties.store(new FileOutputStream(path), comments);
    }


    public static void traverseFolder(String path) {
        File file = new File(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            if (null == files || files.length == 0) {
                return;
            } else {
                Arrays.stream(files).forEach(
                        x -> {
                            if (x.isDirectory())
                                traverseFolder(x.getAbsolutePath());
                            else {
                                String name = x.getName();
                                if (name.contains(".")) {
                                    String substring = name.substring(name.lastIndexOf(".", name.length()));
                                    if (substring.equals(".properties")) {
                                        // TODO 替换文件
                                        System.out.println(x.getAbsolutePath());
                                        try {
                                            update(x.getAbsolutePath(), comments);
                                        } catch (IOException e) {
                                            System.out.println(x.getAbsolutePath() + "修改失败");
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }

                        }
                );
            }
        } else {
            System.out.println("文件不存在!");
        }
    }
}

相关文章
|
网络安全 数据安全/隐私保护
sshpass的简介与使用
今天在配置 svn 钩子的时候,想要登录到另一台服务器上时,指定明文密码进行ssh登录的时候,总是没有响应的停滞在那里了,命令如下: sshpass -p 用户明文密码 ssh 用户名@远程服务器 IP 地址 因为这是连的一台新的服务器,最初并没有进行 ssh 登录测验,所以在使用sshpass 登录之前一定要先测试ssh登录。
5052 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AI与代理IP:携手共创美好未来
在数字化浪潮中,人工智能(AI)与代理IP技术的融合正推动网络环境的智能化发展。AI凭借深度学习、自然语言处理等能力,结合代理IP的匿名性和灵活性,为网络安全、数据分析、内容分发等领域带来革命性变革。本文探讨两者协同作用,通过案例和代码展示其如何共同优化网络性能、保护隐私并提升效率,展望未来智能化、安全化的网络环境。 AI与代理IP的融合不仅提升了网络访问的效率与稳定性,还为智能风控、智能客服及全球内容分发网络(CDN)等应用提供了坚实支持。AI优化代理IP选择与调度,代理IP则保障AI应用的安全与隐私,二者相辅相成,共同推动全球化、智能化的发展趋势。
78 7
|
3月前
|
人工智能 Cloud Native 安全
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三)在云栖大会的精彩分享。讲师深入浅出的分享了软件架构演进过程中,网关所扮演的各类角色,AI 应用的流量新特征对软件架构和网关所提出的新诉求,以及基于阿里自身实践所带来的开源贡献和商业能力。
166 16
|
4月前
|
设计模式 数据采集 分布式计算
企业spark案例 —出租车轨迹分析
企业spark案例 —出租车轨迹分析
146 0
|
小程序
6款无版权可商用的图片网站
6款无版权可商用的图片网站
383 0
6款无版权可商用的图片网站
|
缓存 Java 开发工具
Spring Boot之Spring-devtools热部署:实现快速开发与调试
本篇详细介绍了Spring Boot中的Spring DevTools热部署功能,让开发人员能够在不重启应用的情况下实时查看和验证代码更改。文章涵盖了Spring DevTools的作用、集成步骤、示例演示以及在生产环境中的注意事项。通过该功能,开发人员可以快速迭代和调试应用,提高开发效率。
3880 0
Spring Boot之Spring-devtools热部署:实现快速开发与调试
|
人工智能 自然语言处理 算法
魔塔社区体验AI开发
魔塔社区做AI开发的初体验
30478 0
魔塔社区体验AI开发
【PAT甲级】1150 Travelling Salesman Problem
【PAT甲级】1150 Travelling Salesman Problem
60 0
正则表达式去除空格、符号,只保留中文、英文、数字
正则表达式去除空格、符号,只保留中文、英文、数字
903 0
|
Linux Python
Python编程:MySQLdb模块的安装
Python编程:MySQLdb模块的安装
384 0

热门文章

最新文章