目录
4. Properties与字符缓存流(BufferedWriter)的文件内容的书写的运用:
5. Properties与字符缓存流(BufferedWriter)的文件内容的书写的运用:
1. Properties的引言:
- 可能当我们的java程序正在运行时,我们需要修改其中配置的某一个值,但是我们又不可能将程序停止后修改其中的值,这个时候,就体现出使用properties配置文件的好处了。
- 如果该值是处properties配置文件中的,其可以很好很方便的跟java程序进行交互,我们不需要停止程序,可以直接修改properties配置文件中的值,那么java程序中的该值即可改变。
- 而Properties类,是java程序中读取properties配置文件的优选类。
2. Properties的特点:
- 父类是HashTable,底层原理也是HashTable。
- 该类是专门用于读写properties配置文件的集合类。配置文件格式如下:
key=value
- key和value皆不能为null。两者的默认类型是String 。
3. Properties常用方法:
返回值 | 方法 | 说明 |
---|---|---|
V | put(K key, V value) | 将指定的key映射到此散列表中指定的value。key和value都不能是null。 |
Object | setProperty(String key, String value) | 调用Hashtable方法的put方法 |
V | remove(Object key) | 从此散列表中删除键(及其对应的值)。如果键不在哈希表中,此方法不执行任何操作。 |
Set<String> | stringPropertyNames() | 返回一个不可修改的key集合,其key及其对应的value是字符串 |
String | getProperty(String key) | 使用此属性列表中指定的key查找对应value |
示例演示:
public static void main(String[] args) {
//创建Properties对象
Properties props = new Properties();
//存入数据
//V put(K key, V value) 将指定的key映射到此散列表中指定的value。key和value都不能是null。
Object put = props.put("name", "Tom");
//Properties和Map相似,添加重复的key值时,后来的value会覆盖原来的数据
props.put("age","8");
Object age1 = props.put("age", "23");
System.out.println("age1 = " + age1);
props.put("address","newYork");
//ObjectsetProperty(String key, String value)调用Hashtable方法的put方法
props.setProperty("happy","playBasketball");
System.out.println("----------------#存入数据的Properties为:#----------------");
//打印Properties对象 注: Properties已经重写toString方法
System.out.println("props = " + props);//props = {address=newYork, age=23, name=Tom}
System.out.println("----------------#删除指定的key所对应的键值对#----------------");
//删除指定的key所对应的键值对
//V remove(Object key) 从此散列表中删除键(及其对应的值)。如果键不在哈希表中,此方法不执行任何操作。
Object age = props.remove("age");
System.out.println("age = " + age);
System.out.println("props = " + props);
System.out.println("----------------#遍历集合方式一:#----------------");
//遍历集合
//获取所有的key
//Set<String>stringPropertyNames()返回一个不可修改的key集合,其key及其对应的value是字符串
Set<String> strings = props.stringPropertyNames();
for (String key : strings) {
//StringgetProperty(String key)使用此属性列表中指定的key查找对应value
String property = props.getProperty(key);
System.out.println(key + "=" + property);
}
System.out.println("----------------#遍历集合方式二:#----------------");
Set<Map.Entry<Object, Object>> entries = props.entrySet();
for (Map.Entry<Object, Object> entry : entries) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println( key+ "=" + value);
}
}
结果展示:
age1 = 8
----------------#存入数据的Properties为:#----------------
props = {address=newYork, age=23, name=Tom, happy=playBasketball}
----------------#删除指定的key所对应的键值对#----------------
age = 23
props = {address=newYork, name=Tom, happy=playBasketball}
----------------#遍历集合方式一:#----------------
address=newYork
name=Tom
happy=playBasketball
----------------#遍历集合方式二:#----------------
address=newYork
name=Tom
happy=playBasketball
4. Properties与字符缓存流(BufferedWriter)的文件内容的书写的运用:
返回值 | 方法 | 说明 |
---|---|---|
void | store(Writer writer, String comments) | 将此属性列表(键和元素对)写入此 Properties 表中,以适合使用 load(Reader)方法的格式输出到输出字符流。 |
void | store(OutputStream out, String comments) | 将此属性列表(键和元素对)写入此 Properties 表中,以适合于使用 load(InputStream)方法加载到 Properties 表中的格式输出流。 |
示例演示:
public static void main(String[] args) throws IOException {
Properties props = new Properties();
//存入数据
//V put(K key, V value) 将指定的key映射到此散列表中指定的value。key和value都不能是null。
props.put("name", "Tom");
props.put("age","8");
props.put("address","newYork");
//创建一个输出流
BufferedWriter output = new BufferedWriter(new FileWriter("c.txt"));
//调用Properties对应的方法,和IO融合,将内容写入
//void store(Writer writer, String comments) 注:comments 起到 起别名 的作用
// 将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式输出到输出字符流.
props.store(output,"新学员登记");
output.close();
}
结果展示:
5. Properties与字符缓存流(BufferedWriter)的文件内容的书写的运用:
返回值 | 方法 | 说明 |
---|---|---|
void | load(InputStream inStream) | 从输入字节流读取属性列表(键和元素对)。 |
void | load(Reader reader) | 以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。 |
示例演示:
public static void main(String[] args) throws IOException {
Properties props = new Properties();
//创建一个输入流
BufferedReader input = new BufferedReader(new FileReader("c.txt"));
//加载读取流, 将信息存入集合
//void load(Reader reader) 以简单的线性格式从输入字符流读取属性列表(关键字和元素对)
props.load(input);
input.close();
//Properties的props对象的遍历
Set<String> strings = props.stringPropertyNames();
for (String key : strings) {
String value = props.getProperty(key);
System.out.println(key + "=" + value);
}
}
结果展示:
address=newYork
age=8
name=Tom
如果对你有帮助,请帮我点一下赞,我才有动力继续创作,谢谢!