我把你的头像,设置成我的名字,此刻你便与我同在。
我把你的名字,写进我的代码里面,以后,我的世界便存在着你。

一.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() 方法,打印到控制台。

@Testpublic 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

三.一 list 输出到控制台 用绝对路径加载

@Testpublic 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 被截取了。

三.二 propertyNames 输出 getClass() 加载

@Testpublic 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();}}

三.三 stringPropertyNames 输出 getClassLoader 加载 (推荐)

 @Testpublic void name3Test(){try{Properties properties=new Properties();//直接写src 类路径下的文件名InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");properties.load(input);//把key值转换成set 的形式,遍历setSet<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

@Testpublic 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 文件

五.一 普通写入,中文时乱码

@Testpublic 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();}}

五.二 解决乱码写入的问题

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

@Testpublic 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 配置文件

六.一 导出到 .xml 配置文件 storeToXML

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

@Testpublic 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为属性, 后面跟值来进行输入。
可按照这种形式,继续添加。

六.二 导出XML 配置文件 loadFromXML

@Testpublic 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();}}

这就是Properties 类的常见用法 。

谢谢!!!

Properties 类的详细使用(十三)相关推荐

  1. java properties 参数_Java中Properties 类的详细使用

    我把你的头像,设置成我的名字,此刻你便与我同在. 我把你的名字,写进我的代码里面,以后,我的世界便存在着你. 一.Properties 类 Properties 类位于 java.util.Prope ...

  2. Properties类详细解析

    java.util 类 Properties java.lang.Objectjava.util.Dictionary<K,V>java.util.Hashtable<Object, ...

  3. [Java基础] Properties类的基本操作和介绍

    引言 Java中的.properties文件是一种配置文件,主要用于表达配置信息:通俗来说,存放的数据就像是Map中的key和value的对应关系一样:这样就可以通过键值对来对属性进行匹配,并且属性列 ...

  4. (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流

    [Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...

  5. Properties类读写配置文件

    Properties类读写简单配置文件相当的方便,以前竟然没注意到这个类. FileInputStream fs = new FileInputStream("config.ini" ...

  6. Java Properties 类

    Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串. Properties 类被许多Java类使用.例如,在获取环境变量时它就作为Syst ...

  7. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

  8. Java Properties 类读取配置文件信息

    在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的.比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么 IP ,数据库名称,表名称,数据库主机等信息是我们本 ...

  9. java属性_Java Properties 类

    Java Properties 类 Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串. Properties 类被许多 Java 类使用 ...

  10. Java IO流中 File文件对象与Properties类(四)

    File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 boolean createNewFile():创建新文件,如 ...

最新文章

  1. Hive UDF初探
  2. 一个textview多种颜色
  3. UVA10763交换学生
  4. vb调用vc dll
  5. 基于SNN脉冲神经网络的FPGA实现介绍
  6. php-5.6.26源代码 - opcode执行
  7. C++和C#编写调用COM组件
  8. css3--文字效果
  9. 单独安装想要的office_安装OFFICE不再求人,最省心的方法
  10. openJDK之如何下载各个版本的openJDK源码
  11. sqlserver入门
  12. 冯诺依曼计算机流程图,基本流程图综述
  13. 如何关闭Windows 1011自动更新
  14. android bitmap iplimage,IplImage和Bitmap相互转换
  15. 电商平台二清该怎样合规?
  16. 升级版飞机大战来袭,手把手教学,万字详解,你还学不会嘛?
  17. RISC-V CPU课程设计报告【计算机组成原理课设】
  18. 执行python代码的方式_涨见识了,在终端执行 Python 代码的 6 种方式!
  19. 编写Java程序时的一些经验总结
  20. 网页链接无法使用微信内置浏览器打开的解决方案,实现微信跳转外部浏览器打开网页

热门文章

  1. 自动驾驶之多传感器融合实践(1)------激光雷达点云数据处理
  2. 闪灵CMS插件自动采集文章主动推送给搜索引擎
  3. canfd收不到数据_CAN FD网络的通信距离问题分析
  4. 词根词缀学单词/优秀词典推荐
  5. 数据库中的8种常见约束定义
  6. 决策树后剪枝算法(二)错误率降低剪枝REP
  7. BCM94360CD+linux+驱动,BCM94360CD WINDOWS驱动(32+X64位)
  8. HashMap底层实现原理
  9. cad计算机画图标准,CAD高级绘图员鉴定标准
  10. 软件设计师和软件评测师有什么区别?若想从事软件开发方面,哪个更适合?