前言
在学习JavaWeb连接数据库注册驱动时,第一次接触到了Properties类,做一些笔记供自己也供兄弟朋友萌参考参考。
Properties类干啥的?
Properties主要用于读取配置文件,主要的作用是通过修改配置文件可以方便的修改代码中的参数,实现不用改class文件即可灵活变更参数。(因为java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。)
(看不懂也没事,接着往下再看看~)
Properties类继承自Hash Table类(哈希表)并且实现了Map接口,使用键值对的形式来保存属性集。不过,Properties有特殊的地方,就是它的键和值都是字符串类型。
(哈希表(HashTable)又叫做散列表,是根据键值对而直接访问的数据结构。)
Properties中的主要方法
- 构造方法
public Properties()
创建一个无默认值的空属性列表。 - public Object setProperty(String key, String value) :
给属性列表中添加键和值,并且强制都使用String - public Set stringPropertyNames():
遍历的功能 - public String getProperty(String key)
用指定的键在此属性列表中搜索属性
可保存在流中或从流中加载,只能使用属性集合类 - public void load(Reader reader)
public void load(InputStream inStream)
将文本文件中的数据加载到属性集合中 ,这个方法可以从properties属性文件对应的文件输入流中,加载属性列表到Properties类对象,如代码所示:
Properties pro = new Properties();
FileInputStream in = new FileInputStream("a.properties");
pro.load;
in.close();
-
store(OutputStream out, String comments)
store(Writer writer, String comments)
把集合中的数据保存到文本文件中OutputStream out:字节流输出,不能写中文 (这里将会在下面做出简单解释)
Writer writer:字符流输出,可以写中文
String comments:注释,用来解释说明保存的文件是什么,不能使用中文,否则会产生乱码。默认是unicode编码,一般使用""空字符串。
简单java代码实现
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Properties;
public class propertiesDemo {
public static void main(String[] args) throws IOException {
show01();
show02();
}
private static void show01() throws IOException {
Properties prop = new Properties(); //构造一个Properties对象
prop.setProperty("user","路飞"); //给属性列表添加键和值,
prop.setProperty("password","234");
prop.setProperty("id","海贼王");
FileWriter fw = new FileWriter("D:\\1.txt"); //构造一个字符流输出对象
prop.store(fw,"user_zhushi");//使用字符流输出对象向文件1.txt输入properties属性集
fw.close();
}
private static void show02() throws IOException {
Properties prop = new Properties();
prop.setProperty("name","zys");
prop.setProperty("password","234");
prop.setProperty("sex","boy");
FileOutputStream fos = new FileOutputStream("D:\\2.txt");//构造一个字节流输出对象
prop.store(fos,"user_zhushi1");
fos.close();
}
}
运行结果:
运行结束到D盘查看就会发现多了两个文件如下:
打开这两个文件就可以看到相关的内容如下:
关于OutputStream out:字节流输出,不能写中文的简单解释
若是将代码中方法show02()中的name的值改为中文“张一山”,运行时不会出现错误,但结果将会出现乱码,如图所示: