java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。

一、properties文件

Properties类存在于包Java.util中,该类继承自Hashtable。它提供了几个重要的方法:

1.getProperty(String key),用指定的键在此属性列表中读取搜索属性。也就是通过参数key,得到key所对应的value。

2.load(InputStream inputStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键值对。以提供getProperty(String key)来搜索

3.setProperty(String key,String value),调用Hashtable的方法put。它通过调用基类的put方法来设置键值对

4.store(OutputStream outputStream,String comments),以适合使用load方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。与load方法相反,该方法将键值对写入到指定的文件中去。

5.clear(),清楚所有装在键值对。该方法在基类中提供。

二、操作Properties文件的Java方法

java的properties文件需要放到classpath下面,这样程序才能读取到,有关classpath实际上就是java类或者库的存放路径,在java工程中,properties放到class文件一块。在web应用中,最简单的方法就是放到web应用的WEB-INF\classes目录下即可,也可以放在其他文件下,这时候需要在设置classpath环境变量的时候,将这个文件夹路径加到classpath变量中,这样也可以读取到。

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Test04 {
	public static void main(String[] args) {
		//通过class path读取相对路径下的文件
		//class path : 当前项目编译后的bin目录
		
		//data.properties文件保存在class path 根目录
		//InputStream in = Test04.class.getResourceAsStream("/data.properties")
		
		//temp.properties文件保存在class path根目录下的/Test目录中	
		try (InputStream in = Test04.class.getResourceAsStream("/Test/temp.properties")) {
			
			//加载读取
			Properties props = new Properties();
			props.load(in);
			
			System.out.println(props);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}					
	}
}

三、Properties文件的读取和写入操作

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class test03 {
	public static void main(String[] args) {
		// Properties格式文件的读取
		// 创建输入流
		try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:\\data\\data.properties"))) {
			Properties props = new Properties();

			props.load(bis);// 将“输入流”加载至Properties集合对象中

			// 根据key,获取value
			System.out.println(props.get("cn"));
			System.out.println(props.get("kr"));
		} catch (IOException e) {

			e.printStackTrace();
		}

		// Properties格式文件的写入
		Properties props = new Properties();
		props.put("F1", "2344");
		props.put("F2", "5423");
		props.put("F3", "8782");
		props.put("F4", "4324");
		props.put("F5", "7542");

		// 使用“输出流”,将Properties集合中的KV键值对,写入*.properties文件
		try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("c:\\data\\demo.properties"))) {
			props.store(bos, "just do IT");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}