Java Properties工具类,包括新增、更新及写入文件【解决中文乱码问题】

简介: Java Properties工具类,包括新增、更新及写入文件【解决中文乱码问题】
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Enumeration;
import java.util.Properties;

public class PropertiesUtil {

    public static final Properties properties = new Properties();
    public static final String path = "config.properties";

    public static void init() {
        InputStream inputStream = PropertiesUtil.class.getClassLoader().getResourceAsStream(path);
        try {
            properties.load(new InputStreamReader(inputStream,"UTF-8"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *   获取指定的value值
     * @param key 要删除的属性key
     * @author liguangni
     */
    public static String get(String key) {
        return properties.getProperty(key);
    }

    /**
     *  新增或者修改配置文件(如果指定的key存在,则修改,否则执行新增)
     * @param key 要删除的属性key
     * @author liguangni
     */
    public static void update(String key, String value) {
        properties.setProperty(key, value);
        try(
            OutputStreamWriter     output = new OutputStreamWriter(new FileOutputStream(Thread.currentThread().getContextClassLoader().getResource(path).getPath()), "UTF-8");
        ) {
            properties.store(output, "");
            output.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *  删除指定的属性值
     * @param key 要删除的属性key
     * @author liguangni
     */
    public static void delete(String key) {
        properties.remove(key);
        try(
            FileOutputStream oFile = new FileOutputStream(path);
        ) {
            properties.store(oFile, "");
            oFile.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *   获取所有的键值对
     * @param key 要删除的属性key
     * @author liguangni
     */
    public static void list() {
        Enumeration en = properties.propertyNames(); // 得到配置文件的名字
        while (en.hasMoreElements()) {
            String strKey = (String) en.nextElement();
            String strValue = properties.getProperty(strKey);
            System.out.println(strKey + "=" + strValue);
        }
    }
}
目录
相关文章
|
1月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
31 1
|
1月前
|
Java
java中替换文件内容
java中替换文件内容
14 1
|
1月前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
24 1
|
6天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
1天前
|
存储 前端开发 Java
Java实现文件分片上传
Java实现文件分片上传
6 0
|
9天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。
|
29天前
|
JSON Java 网络安全
Java使用hutool工具类发送网络请求
Java使用hutool工具类发送网络请求
42 0
|
1月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
94 3
|
1月前
|
Java
使用java将字符串写入到指定的文件中
使用java将字符串写入到指定的文件中
11 0