浅谈Java中Properties类的详细使用

目录
  • 一、Properties 类
  • 二、打印JVM参数
  • 三、打印自定义.properties文件中的值
    • 3.1、list输出到控制台用绝对路径加载
    • 3.2、propertyNames输出getClass()加载
    • 3.3、stringPropertyNames输出getClassLoader加载(推荐)
  • 四、获取值getProperties
  • 五、写入到Properties文件
    • 5.1、普通写入,中文时乱码
    • 5.2、解决乱码写入的问题
  • 六、加载和导出到xml配置文件
    • 6.1、导出到.xml配置文件storeToXML
    • 6.2、导出XML配置文件loadFromXML

一、Properties 类

Properties 类位于 java.util.Properties ,是Java 语言的配置文件所使用的类, Xxx.properties 为Java 语言常见的配置文件,如数据库的配置 jdbc.properties, 系统参数配置 system.properties。 这里,讲解一下Properties 类的具体使用。
以key=value 的 键值对的形式进行存储值。 key值不能重复。

继承了Hashtable 类,以Map 的形式进行放置值, put(key,value) get(key)

主要方法:

这里只讲解一些常用的形式。

二、打印JVM参数

JVM 中可以获取Properties, 来打印输出 JVM 所了解的属性值。
用list() 方法,打印到控制台。

@Test
public void printTest(){
    Properties properties=System.getProperties();
    properties.list(System.out);
}

常见的有:

三、打印自定义.properties文件中的值

在src 目录下,放置 jdbc.properties 文件,是数据库的配置文件。

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8

jdbc.username=root

jdbc.password=abc123

3.1、list输出到控制台用绝对路径加载

@Test
public void name1Test(){
    try{
        Properties properties=new Properties();
        //用的是磁盘符的绝对路径
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\workspace\\JavaLearn\\src\\jdbc.properties"));
        properties.load(input);
        properties.list(System.out);
    }catch(Exception e){
        e.printStackTrace();
    }
}

url 被截取了。

3.2、propertyNames输出getClass()加载

@Test
public void name2Test(){
    try{
        Properties properties=new Properties();  // 用/文件名, / 表示根目录
        InputStream input=PropertiesTest.class.getClass().getResourceAsStream("/jdbc.properties");
        properties.load(input);
        Enumeration<String> names=(Enumeration<String>) properties.propertyNames();
        while(names.hasMoreElements()){
            //这是key值
            String key=names.nextElement();
            String value=properties.getProperty(key);
            System.out.println(key+"="+value);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

3.3、stringPropertyNames输出getClassLoader加载(推荐)

@Test
public void name3Test(){
    try{
        Properties properties=new Properties();
        //直接写src 类路径下的文件名
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);

        //把key值转换成set 的形式,遍历set
        Set<String> names=properties.stringPropertyNames();
        Iterator<String> iterator=names.iterator();
        while(iterator.hasNext()){
            String key=iterator.next();
            String value=properties.getProperty(key);
            System.out.println(key+"="+value);
        }

    }catch(Exception e){
        e.printStackTrace();
    }
}

四、获取值getProperties

@Test
public void name3Test(){
    try{
        Properties properties=new Properties();
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);
        //String value=properties.getProperty("jdbc.url");
        String value=properties.getProperty("jdbc.url1","没有该key值");
        System.out.println("输出值:"+value);

    }catch(Exception e){
        e.printStackTrace();
    }
}

输出时,getProperty() 有当前的key值,则输出Key值对应的value 值。
如果没有key值,则输出 null 值。
后面可以跟 default 值,如果没有该值,则输出设置的默认值。

五、写入到Properties文件

5.1、普通写入,中文时乱码

@Test
public void writeTest(){
    try{
        Properties properties=new Properties();
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);

        //多添加几个值。
        properties.setProperty("name","两个蝴蝶飞");
        properties.setProperty("sex","男");

        //properties.put("name","两个蝴蝶飞");  可以用继承Hashtable 的put 方法写入值
        // properties.put("sex","男");

        //将添加的值,连同以前的值一起写入 新的属性文件里面。
        OutputStream out=new FileOutputStream("D:\\jdbc.properties");
        properties.store(out,"填充数据");

    }catch(Exception e){
        e.printStackTrace();
    }
}

5.2、解决乱码写入的问题

在构建输入流和输出流时,指定编码格式, 编码的格式相同。 如均是 utf-8的形式。

@Test
public void write2Test(){
    try{
        Properties properties=new Properties();
        //用绝对路径
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\workspace\\JavaLearn\\src\\jdbc.properties"));
        properties.load(new InputStreamReader(input,"utf-8"));
            //多添加几个值。
        properties.setProperty("name","两个蝴蝶飞");
        properties.setProperty("sex","男");

        OutputStream output=new FileOutputStream("D:\\jdbc.properties");
        OutputStreamWriter out=new OutputStreamWriter(output,"utf-8");
        properties.store(out,"填充数据");

    }catch(Exception e){
        e.printStackTrace();
    }
}

测试运行之后:

这样便解决了乱码的问题。

六、加载和导出到xml配置文件

6.1、导出到.xml配置文件storeToXML

将Properties 类中定义的属性,导出成 .xml 的形式.

@Test
public void xmlWriteTest(){
    try{
        //处理成编码样式。
        Properties properties=new Properties();

            //多添加几个值。
        properties.setProperty("name","两个蝴蝶飞");
        properties.setProperty("sex","男");
        OutputStream output=new FileOutputStream("D:\\jdbc.xml");
        //编码设置成utf-8的形式。
        properties.storeToXML(output,"填充到xml","utf-8");

    }catch(Exception e){
        e.printStackTrace();
    }
}

测试结果为:

用 <entry> 节点 key为属性, 后面跟值来进行输入。
可按照这种形式,继续添加。

6.2、导出XML配置文件loadFromXML

@Test
public void xmlReadTest(){
    try{
        Properties properties=new Properties();
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\jdbc.xml"));
        properties.loadFromXML(input);
        properties.list(System.out);

    }catch(Exception e){
        e.printStackTrace();
    }
}

以上就是浅谈Java中Properties类的详细使用的详细内容,更多关于Java Properties的资料请关注我们其它相关文章!

(0)

相关推荐

  • java加载properties文件的六种方法总结

    java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过import java.util.ResourceBundle类的getBundle(String baseName)方法加载. 注意:一定要区分路径格式 实现代码如下: package com.ut

  • Java读取.properties配置文件方法示例

    一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourceAsStream的文件读取方法 如果想要使用这个方法,则需要了解一些基本使用信息: 1.读取文件路径范围:只局限于工程的源文件中 2.文件访问形式:带"/"是绝对路径,不带"/"是相对路径 3.读取文件类型:主要为:.properties文件,.xml文件 三.使用

  • java用类加载器的5种方式读取.properties文件

    用类加载器的5中形式读取.properties文件(这个.properties文件一般放在src的下面) 用类加载器进行读取:这里采取先向大家讲读取类加载器的几种方法:然后写一个例子把几种方法融进去,让大家直观感受.最后分析原理.(主要是结合所牵涉的方法的源代码的角度进行分析) 这里先介绍用类加载器读取的几种方法: 1.任意类名.class.getResourceAsStream("/文件所在的位置");[文件所在的位置从包名开始写] 2.和.properties文件在同一个目录下的类

  • Java读取.properties配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配置文件就比较容易. 介绍几种读取方式: 1.基于ClassLoder读取配置文件 注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便. Properties properties = new Properties(); // 使用ClassLoader加载propert

  • Java中使用Properties配置文件的简单方法

    properties Properties文件是java中的一种配置文件,文件后缀为".properties",文件的内容格式是"key=value"的格式,用 # 作为注释. 我的properties 文件放在路径 写与读 向properties文件中写入数据 //创建一个properties对象 Properties pro = new Properties(); //创建一个输出流 里面路径填写文件的路径 OutputStream proos = new Fi

  • java Beanutils.copyProperties( )用法详解

    这是一篇开发自辩甩锅稿~~~~ 昨天测试小姐姐将我的一个bug单重开了,emmmm....内心OS:就调整下对象某个属性类型这么简单的操作,我怎么可能会出错呢,一定不是我的锅!!but再怎么抗拒,bug还是要改的,毕竟晚上就要发版本了~~ 老老实实将我前天改的部分跟了一遍,恩,完美,没有任何的缺失~~but本应success的测试数据,接口返还的结果确实是false来着,那还是老老实实debug吧. 一步步跟下来,恩,多么顺畅,就说一定不是我的锅~~诶?不对不对,这里的ID值,为啥是null?传

  • java加载属性配置properties文件的方法

    什么是properties文件 属性配置文件,后缀名为 .properties 文件中严格按照key=value进行数据参数的填写 中文参数值需要转为Unicode编码 不区分基本数据类型 一个编辑好的aaa.properties文件如下图所示 username=root flag=true xm =\u4f60\u597d age=18 为什么要使用properties文件 设想这么一种场景,当你项目发布上线后,比如连接mysql数据库的端口号需要调整,难道需要重写改代码,打包,发布么?对于一

  • Java读取properties文件连接数据库的方法示例

    之前我们在入门jdbc的时候,常用这种方法连接数据库: package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { public static Connection getConnection() { Connection conn = null; try { Class.forName

  • Java 读取、获取配置文件.properties中的数据

    java获取配置文件.properties中的数据,具体内容如下所示: 方法太多,只写一种比较简单的. 文件test1.properties内容 test1 = 123; test2=3211 Properties prop = new Properties(); prop.load(new FileInputStream("src/test1.properties")); System.out.println(prop.get("test1")); 输出 123;

  • 浅谈Java中Properties类的详细使用

    目录 一.Properties 类 二.打印JVM参数 三.打印自定义.properties文件中的值 3.1.list输出到控制台用绝对路径加载 3.2.propertyNames输出getClass()加载 3.3.stringPropertyNames输出getClassLoader加载(推荐) 四.获取值getProperties 五.写入到Properties文件 5.1.普通写入,中文时乱码 5.2.解决乱码写入的问题 六.加载和导出到xml配置文件 6.1.导出到.xml配置文件s

  • 浅谈Java中对类的主动引用和被动引用

    本文研究的主要是Java中类的主动引用和被动引用,具体介绍如下. 主动引用,这里介绍的是主动引用的五种场景 1.遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化就会被初始化,创建对象,读取或设置静态字段,调用静态方法. 2.反射 3.子类初始化前会先初始化父类 4.包含main方法的类,虚拟机启动时会先初始化该类 5.使用jdk的动态语言支持时(不明) 被动引用: class SuperClass{ static{ syso("sup

  • 浅谈java中math类中三种取整函数的区别

    math类中三大取整函数 1.ceil 2.floor 3.round 其实三种取整函数挺简单的.只要记住三个函数名翻译过来的汉语便能轻松理解三大函数,下面一一介绍 1.ceil,意思是天花板,java中叫做向上取整,大于等于该数字的最接近的整数 例: math.ceil(13.2)=14 math.ceil(-13.2)=-13 2.floor,意思是地板,java中叫做向下取整,小于等于该数字的最接近的整数 例: math.floor(13.2)=13 math.floor(-13.2)=-

  • 浅谈java中BigDecimal类的简单用法

    一.BigDecimal概述 ​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理.一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度.所以开发中,如果我们需要精确计算的结果,则必须使用

  • Java中Properties 类的详细使用

    我把你的头像,设置成我的名字,此刻你便与我同在. 我把你的名字,写进我的代码里面,以后,我的世界便存在着你. 一.Properties 类 Properties 类位于 java.util.Properties ,是Java 语言的配置文件所使用的类, Xxx.properties 为Java 语言常见的配置文件,如数据库的配置 jdbc.properties, 系统参数配置 system.properties. 这里,讲解一下Properties 类的具体使用. 以key=value 的 键值

  • 浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.demo; import org.junit.jupiter.api.*; import static org.junit.jupiter.api.Assertions.*; @DisplayName("售票器类型测试") class DemoTest { // 定义测试的实例 private

  • 浅谈java中为什么实体类需要实现序列化

    当客户端访问某个能开启会话功能的资源,web服务器就会创建一个HTTPSession对象,每个HTTPSession对象都会占用一定的内存,如果在同一个时间段内访问的用户太多,就会消耗大量的服务器内存,为了解决这个问题我们使用一种技术:session的持久化. 什么是session的持久化? web服务器会把暂时不活动的并且没有失效的HTTPSession对象转移到文件系统或数据库中储存,服务器要用时在把他们转载到内存. 把Session对象转移到文件系统或数据库中储存就需要用到序列化: jav

  • 浅谈Java中常用数据结构的实现类 Collection和Map

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个C

  • 浅谈java中六大时间类的使用和区别

    java.util.Date java.sql.Date java.sql.Time java.sql.Timestamp java.text.SimpleDateFormat java.util.Calendar java.util.Date日期格式为:年月日时分秒 java.sql.Date日期格式为:年月日 java.sql.Time日期格式为:时分秒 java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒) 从数据库中取出来的日期一般都用getTimestamp()方法

  • 浅谈Java中的class类

    Class 类是在Java语言中定义一个特定类的实现.一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类.Class类的对象用于表示当前运行的 Java 应用程序中的类和接口. 比如:每个数组均属于一个 Class 类对象,所有具有相同元素类型和维数的数组共享一个Class 对象.基本的 Java 类型(boolean, byte, char, short,int, long, float 和 double) 和 void 类型也可表示为 Class 对象. 以下示例使用

随机推荐