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<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 加载 (推荐)

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

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

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

测试结果为:

用 <entry> 节点 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 类使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

  • 详解Java中log4j.properties配置与加载应用

    log4j.properties总结: 一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. I

  • java Beanutils.copyProperties( )用法详解

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

  • Java中Properties 类的详细使用

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

  • 浅谈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中Properties类的操作实例详解

    Java中Properties类的操作实例详解 知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起.本文通过看<Java编程思想>和一些网友的博客总结而来,只为简单介绍Properties类的相关操作.  一.Java Properties类 Java中有个比较重要的类Properti

  • Java中Scanner类与BufferReader类的不同点(非常详细)

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本. 下面是两个类的不同之处: 当nextLine()被用在nextXXX()之后,用Scanner类有什么问题 尝试去猜测下面代码的输出内容: // Code using Scanner Class import java.util.Scanner; c

  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

  • java中Object类4种方法详细介绍

    目录 Object(四大方法): hashCode()方法: equals()方法: getClass()方法: toString()方法: 总结 Object(四大方法): 文章干货满满,耐性看完~~何为Object?首先先来看看官方对Object的介绍:在这里附上Java官方的查阅工具:https://docs.oracle.com/en/java/javase/17/docs/api/index.html 由官方介绍可见,object属于Java.lang包内的一个类,而且提供了很多种方法

  • Java中Properties的使用详解

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置.今天,我们就开始Properties的使用. Java中Properties的使用 Properties的文档说明: The Properties class represents a persistent set of propertie

  • Java中BufferedReader类获取输入输入字符串实例

    使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字符串,在某些时候并不适用,因为使用者可能输入一个字符串,中间会包括空白字元,而您希望取得完整的字符串. 您可以使用BufferedReader类别,它是java.io包中所提供的一个类,所以使用这个类时必须先import java.io包:使用BufferedReader对象的readLine()方法必须处理IOException异常(exception),异常处理机制是Java提供给程序设计人员捕捉程序中可能发生的错误所

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

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

  • Java中String类使用方法总结

    一.Java中关于String类的常用方法 本文只用来自己做笔记,随便写写,方便自己理解,谢谢各位的指正.下面是摘抄慕课的一部分 1.使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符. 2.字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1 3.使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引:如果没有匹配结果,返回 -1 4.整

随机推荐