Properties
Properties
属性集
继承自Hashtable,属于Map集合
Properties 类表示了一个持久的属性集。
* Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串(一般情况:它用作配置文件去使用,MySQL或者Oracle中用它做配置文件)
* 构造方法:
* public Properties():创建一个空属性列表
package org.westos_08;
import java.util.Properties;
import java.util.Set;
/**
* 属性集合类:Properties有自己的遍历和添加元素的功能
* 给属性列表中添加元素:
* public Object setProperty(String key,String value)
* public Set stringPropertyNames():获取当前属性列表中所有的键的集合,键值都是String类型
* public String getProperty(String key)用指定的键在此属性列表中搜索属性值
* @author Apple
*/
public class PropertiesDemo2 {
public static void main(String[] args) {
//创建属性集合类对象
Properties prop = new Properties() ;
//添加元素
//public Object setProperty(String key,String value)
prop.setProperty("张三", "30") ;
prop.setProperty("李四", "40") ;
prop.setProperty("王五", "50") ;
prop.setProperty("赵六", "60") ;
//遍历属性列表:public Set<String> stringPropertyNames()
Set<String> keySet = prop.stringPropertyNames() ;
for(String key:keySet){
//通过键搜索值
//public String getProperty(String key)
String value = prop.getProperty(key) ;
System.out.println(key+"="+value);
}
}
}
package org.westos_09;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
/**
* Properties 可保存在流中或从流中加载。
* 将文件中的数据加载到属性集合中:public void load(Reader reader)
* 将属性集合中的数据保存到文件中:public void store(Writer writer,String comments)
* 第二个参数:comments:对当前属性列表 的描述
*
* 举例:玩单机游戏
* 保存进度和进度的加载
* “吕布”=”方天画戟”
* @author Apple
*/
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
// myStore();
myLoad() ;
}
//将文件中的数据加载到属性集合中
private static void myLoad() throws IOException {
//public void load(Reader reader)
//创建属性集合类对象
Properties prop = new Properties() ;
//创建字符输入流对象
FileReader fr = new FileReader("name.txt") ;
//调用方法
prop.load(fr) ;
//释放资源
fr.close() ;
//显示输出
System.out.println(prop);
}
private static void myStore() throws IOException {
//创建属性集合类对象
Properties prop = new Properties();
//给属性集合中添加数据
prop.setProperty("张三", "30") ;
prop.setProperty("李四", "40") ;
prop.setProperty("王五", "50") ;
//将属性列表中的数据保存到文件中
// public void store(Writer writer,String comments)
//创建字符输出流
FileWriter fw = new FileWriter(“name.txt”) ;
//调用方法
prop.store(fw, “names content”) ;
//释放资源
fw.close() ;
}
package org.westos_09;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.Properties;
import java.util.Set;
/**
* 我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么。
请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其值为”100”
分析:
1)将user.txt文件中的内容加载到属性集合类中
2)遍历属性列表:获取所有的键的集合:stringPropertyNames(String key );
判断:如果"lisi"这个键中key值相等
修改:setProperty(key,"100") ;
3)重新将属性集合中的数据写到user.txt中
预习:
多线程(多线程实现的方式(2中),同步机制是什么,如何解决多线程安全问题)
什么是Java中的等待唤醒机制,多线程实现方式第三种是什么(线程池)
网络编程:网络编程三要素是什么,UDP编程,TCP编程
@author Apple
*/
public class PropertiesTest {public static void main(String[] args) throws IOException {
//创建属性集合类对象
Properties prop = new Properties() ;//创建字符输入流对象 Reader r = new FileReader("user.txt") ; //加载到属性集合中 prop.load(r) ; //关闭流资源 r.close() ; //遍历属性列表 Set<String> keySet = prop.stringPropertyNames() ; for(String key:keySet){ //判断 if("lisi".equals(key)){ //修改 prop.setProperty(key, "100") ; } } //创建字符输出流丢向 Writer w = new FileWriter("user.txt") ; //调用功能 prop.store(w, "content") ; //释放资源 w.close() ;
}
}