Properties 类的详细使用(十三)
我把你的头像,设置成我的名字,此刻你便与我同在。
我把你的名字,写进我的代码里面,以后,我的世界便存在着你。
一.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 类的详细使用(十三)相关推荐
- java properties 参数_Java中Properties 类的详细使用
我把你的头像,设置成我的名字,此刻你便与我同在. 我把你的名字,写进我的代码里面,以后,我的世界便存在着你. 一.Properties 类 Properties 类位于 java.util.Prope ...
- Properties类详细解析
java.util 类 Properties java.lang.Objectjava.util.Dictionary<K,V>java.util.Hashtable<Object, ...
- [Java基础] Properties类的基本操作和介绍
引言 Java中的.properties文件是一种配置文件,主要用于表达配置信息:通俗来说,存放的数据就像是Map中的key和value的对应关系一样:这样就可以通过键值对来对属性进行匹配,并且属性列 ...
- (java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流
[Properties特点] /** 集合对象Properties类特点:* 1. 继承Hashtable,实现Map接口* 2. 该集合无泛型,键值都是字符串* 3. 键值可以存储到集合中,也可以存 ...
- Properties类读写配置文件
Properties类读写简单配置文件相当的方便,以前竟然没注意到这个类. FileInputStream fs = new FileInputStream("config.ini" ...
- Java Properties 类
Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串. Properties 类被许多Java类使用.例如,在获取环境变量时它就作为Syst ...
- java中properties作用,java中Properties类的使用
java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...
- Java Properties 类读取配置文件信息
在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的.比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据库那么 IP ,数据库名称,表名称,数据库主机等信息是我们本 ...
- java属性_Java Properties 类
Java Properties 类 Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串. Properties 类被许多 Java 类使用 ...
- Java IO流中 File文件对象与Properties类(四)
File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 boolean createNewFile():创建新文件,如 ...
最新文章
- Hive UDF初探
- 一个textview多种颜色
- UVA10763交换学生
- vb调用vc dll
- 基于SNN脉冲神经网络的FPGA实现介绍
- php-5.6.26源代码 - opcode执行
- C++和C#编写调用COM组件
- css3--文字效果
- 单独安装想要的office_安装OFFICE不再求人,最省心的方法
- openJDK之如何下载各个版本的openJDK源码
- sqlserver入门
- 冯诺依曼计算机流程图,基本流程图综述
- 如何关闭Windows 1011自动更新
- android bitmap iplimage,IplImage和Bitmap相互转换
- 电商平台二清该怎样合规?
- 升级版飞机大战来袭,手把手教学,万字详解,你还学不会嘛?
- RISC-V CPU课程设计报告【计算机组成原理课设】
- 执行python代码的方式_涨见识了,在终端执行 Python 代码的 6 种方式!
- 编写Java程序时的一些经验总结
- 网页链接无法使用微信内置浏览器打开的解决方案,实现微信跳转外部浏览器打开网页
热门文章
- 自动驾驶之多传感器融合实践(1)------激光雷达点云数据处理
- 闪灵CMS插件自动采集文章主动推送给搜索引擎
- canfd收不到数据_CAN FD网络的通信距离问题分析
- 词根词缀学单词/优秀词典推荐
- 数据库中的8种常见约束定义
- 决策树后剪枝算法(二)错误率降低剪枝REP
- BCM94360CD+linux+驱动,BCM94360CD WINDOWS驱动(32+X64位)
- HashMap底层实现原理
- cad计算机画图标准,CAD高级绘图员鉴定标准
- 软件设计师和软件评测师有什么区别?若想从事软件开发方面,哪个更适合?