java properties 参数_Java中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() 方法,打印到控制台。
@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
三.一 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 被截取了。
三.二 propertyNames 输出 getClass() 加载
@Test
public void name2Test(){
try{
Properties properties=new Properties(); // 用/文件名, / 表示根目录
InputStream input=PropertiesTest.class.getClass().getResourceAsStream("/jdbc.properties");
properties.load(input);
Enumeration names=(Enumeration) 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 加载 (推荐)
@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 names=properties.stringPropertyNames();
Iterator 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 文件
五.一 普通写入,中文时乱码
@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();
}
}
五.二 解决乱码写入的问题
在构建输入流和输出流时,指定编码格式, 编码的格式相同。 如均是 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 配置文件
六.一 导出到 .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();
}
}
测试结果为:
用 节点 key为属性, 后面跟值来进行输入。
可按照这种形式,继续添加。
六.二 导出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();
}
}
这就是Properties 类的常见用法 。
到此这篇关于Java中Properties 类的详细使用的文章就介绍到这了,更多相关Properties 类使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
java properties 参数_Java中Properties 类的详细使用相关推荐
- Java中对properties分组_Java中Properties类的使用
在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Properties的构造函数有两个,一个不带参数,一 ...
- java file构造方法_Java中FileOutputStream类的常用方法
今天动力节点java学院小编将为大家分享Java中FileOutputStream类的常用方法,希望通过此文能够帮助到大家,下面就随小编一起看看Java中FileOutputStream类的常用方法都 ...
- java 不定参数_java中不定长参数的实例用法
java中不定长参数的使用方法 不定长参数方法的语法如下: 返回值 方法名(参数类型...参数名称) 在参数列表中使用"..."形式定义不定长参数,其实这个不定长参数a就是一个数组 ...
- java properties用法_java中Properties文件加载和使用方法
一.Properties简介 Properties 类继承自HashTable,提供的方法很像Map的实现类HashMap.它在 Java 编程的早期就有了,并且几乎没有什么变化.J2SE 的 Tig ...
- java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- java 传入参数_Java 中方法参数的传递
java中方法参数传递看似有两种,值传递和引用传递.而实际上都是值传递. 所谓值传递,传递的是变量的副本就是说,在将变量a作为参数传进方法中时,方法中接收到的是a的副本,在方法中对参数的修改实际上修改 ...
- java wait 参数_java中wait()和join()方法的区别是什么
java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...
- java单例模式 参数_java中的几种单例模式
目前比较常见的有4种(DCL为懒汉模式的线程安全版本). 单例模式的实现一般需要满足以下条件: 1.构造方法私有化,实例属性私有化. 2.必须仅在类的内部完成实例的初始化过程. 3.提供公共静态方法, ...
- java object 方法_Java中Object类常用的12个方法,你用过几个?
前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的"老祖宗".Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承 ...
最新文章
- 麦咭早教机器人_号外|「2019第一站」麦咭亮相香港国际授权展!
- C语言经典例27-利用递归逆序输出字符串
- Vue——自定义组件的 v-model
- 创建WebSocket服务器
- 163免费邮使用体验
- CSS实现【表格内容超过一行的部分,用省略号代替】
- dojo中的AMD模式开发案例
- 24点游戏c语言源代码6,C语言解24点游戏程序
- Python第十二章-多进程和多线程01-多进程
- 八十年代的计算机游戏,儿时小霸王的记忆 八十年代最伟大的二十款游戏
- Mobile First! Wijmo 5 之 架构
- paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
- vs生成解决方案默认路径_交换网络防环协议——STP生成树,太阁实验栈
- JUnit 4 vs JUnit 5
- Android超炫图片浏览器代码
- 修改IE地址栏Tomcat小猫咪图标
- Windows Server2008 R2搭建域环境(步骤最详细)
- 示波器学习(一):示波器的作用、类型和基本结构
- html5黑板源码,HTML5/Canvas黑板涂鸦动画
- 使C#语言编程更加高效的伎俩
热门文章
- DFINITY 与电竞媒体 United Esports 共同推出基于IC的游戏平台 Achievement Unblocked
- 《HTML+CSS+JavaScript》之第4章 文本
- XX招聘系统实训移动App项目总结
- 7月各国入境政策汇总!
- Python基础——学习手册
- linux 分区的命名,Linux分区命名方案
- Bagging算法最全解析-机器学习
- 基于http的API的安全性
- 自定义微信小程序tabBar,兼容iPhone异形全面屏
- Springboot毕设项目健身俱乐部会籍管理系统cbz46(java+VUE+Mybatis+Maven+Mysql)