一.特殊文件
(1)普通文件:以.txt结尾的文件,对文件数据格式没有要求。
(2)属性文件:存储的数据以且只以键值对的形式存储,用=连接,如jack=20。一般使用.properties后缀
(3)XML文件:存储的数据是使用xml语言编写的。
二.属性文件
1.属性文件的特点
(1)数据全由键值对构成。
(2)键不能重复。
(3)文件后缀一般为.properties。
只要数据都只由键值对形式构成的文件都可以叫属性文件,使用.properties后缀是为了标识该文件是属性文件。
2.Properties类
Properties类是Java中一个Map接口的实现类,专门用于读写.properties文件。
Properties对象实质是一个Map集合,但我们一般不把Properties当集合使用,而是通过Properties对象来操作,properties文件。
3.通过Properties读取.properties文件的数据
(1)先创建一个Properties对象
Properties pro = new Properties();
该对象可以看作是待操作的.properties文件的实例化。
(2)使用load()方法加载输入流
pro.load(InputStream is):通过字节输入流读取属性文件数据,is是待操作的.properties文件的输入流。
pro.load(Reader reader):通过字符输入流读取属性文件数据,reader是待操作的.properties文件的输入流。键值对以字符存储,一般使用字符输入流读取。
pro.load(new FileReader("D:\\java\\idea\\AllProjects\\demo1\\src\\main\\java\\PropertiesAndXml\\User.properties"));
(3)接下来就是使用Properties类提供的方法读取.properties文件。
属性文件:
Jack = 18
Tom = 19
Paul = 20
小明 = 18
小刚 = 19
小王 = 20
.stringPropertyNames()方法返回一个包含所有键名的集合
.getProperty(String key):根据键key返回对应的值value,返回值为String
//stringPropertyNames()返回一个包含属性文件中所有键名构成的集合
Set<String> keys = pro.stringPropertyNames();
//打印键名
for (String key : keys) {
System.out.println(key+"="+pro.getProperty(key));
}
4.通过Properties将数据写入.properties文件
(1)同样地,先创建Properties对象
Properties pro = new Properties();
(2)将要存入文件的键值对先存入Properties对象中。
.setProperty(String key,String value):保存键值对数据到Properties中,该方法返回值为Object。若Properties对象中已保存了键key,则替换旧value,并返回该旧value。若属性文件没有键key,则存入,并返回null。
pro.setProperty("小芳","20");
pro.setProperty("小美","20");
(3)最后将Properties对象的键值对存入属性文件中。
pro.store(OutputStream os,String comments):将pro对象中所有的键值对通过输出流写入到属性文件中,comments为要注释的信息
pro.store(Writer w,String comments):将pro对象中所有的键值对通过字符流写入到属性文件中。
pro.store(new FileWriter("D:\\java\\idea\\AllProjects\\demo1\\src\\main\\java\\PropertiesAndXml\\User.properties"),
"添加信息"
);
执行完之后再打开属性文件,就能发现写入了新的键值对,且以注释的方式添加了注释信息和写入时间。
5.使用
(1)Properties对象是一个Map接口实现类,因此Map的接口方法Properties对象也能使用。如containsKey()等。
(2).properties文件与Properties对象是通过输入输出流连接的,通过load()方法为Properties对象加载.properties文件的输入流读取文件,通过store()方法为Properties对象加载.properties文件的输出流写入文件。Java通过Properties对象来操作.properties文件,Properties对象又是通过IO流来连接.properties文件。