JAVA----特殊操作流Properties
JAVA----特殊操作流Properties
概述:
-
Properties是一个Map集合体系的一个类(Map集合:拥有键值对,一个键(key)对应一个值(value))
-
它可以保存到流中或者从流中加载
练习:Properties作为Map集合的使用:
代码:
Properties prop = new Properties();//Properties和map集合有些许不一样,前者无法使用泛型<>
prop.put("001","金娃娃");
prop.put("002","刘xx");
prop.put("003","刘x");
Set<Object> keySet = prop.keySet();
for(Object key:keySet)
{
Object value = prop.get(key);
System.out.println(key+","+value);
}
}
缺点:Properties属于Map集合 没有TreeSet集合的排序功能
Properties作为Map集合的特有方法
方法名 | 说明 |
---|---|
Object setProperty(String key,String value) | 设置集合的键和值,都是String类型,底层调用Hashtable方法put |
String getProperty(String key) | 使用此属性列表中制定的键搜索属性 |
Set |
从该属性列表中返回一个不可修改的键集,其中键集对应的值是字符串类型 |
代码案例:
//特有方法:
Properties prop = new Properties();
prop.setProperty("001","金娃娃");
prop.setProperty("002","刘xx");
prop.setProperty("003","刘x");
// String value = prop.getProperty("003");
// System.out.println(value);
// System.out.println(prop);
Set<String> keySet = prop.stringPropertyNames();
for(String key:keySet)
{
String value = prop.getProperty(key);
System.out.println(key+","+value);
}
该特有方法的输出不随机。、
Properties与IO流结合的方法
两个方法(store 和 load)
-
store 方法是将内容储存在文件里
-
load 方法是将文件里的内容读取出来
Properties的实例:游戏次数
需求:设计一个只可以玩三次的游戏,若想继续游玩,则需要充值。
思路:
-
写一个游戏类,里面有一个猜数字的游戏
-
写一个测试类,里面有一个main()方法,main()方法里按照下面步骤完成:
A.从文件中读取数据(load()方法)到Propertites集合中,文件是game.txt,里面有一个内容:count=0
B.通过Properties集合获取到游戏的次数
C.判断游戏次数是否已经达到了三次
若达到,给出提示:试玩结束
若未达到,次数+1,重新写会文件,用store()方法实现
代码实现:
- 游戏类:
public class GuessNumber {
private GuessNumber(){
}
public static void start(){
Random random = new Random();
int number=random.nextInt(100)+1;
while (true)
{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = scanner.nextInt();
if(guessNumber>number)
{
System.out.println("你猜大了");
}
else if(guessNumber<number)
{
System.out.println("你猜小了");
}
else
{
System.out.println("恭喜你猜中了!");
break;
}
}
}
}
- 测试类:
public class PropertiesTest {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
FileReader fr = new FileReader("E:\\test\\Study\\gane.txt");
prop.load(fr);
fr.close();
String count = prop.getProperty("count");
int number=Integer.parseInt(count);
if (number>3){
System.out.println("试玩结束,请充值");
}
else{
GuessNumber.start();
number++;
prop.setProperty("count",String.valueOf(number));
FileWriter fw = new FileWriter("E:\\test\\Study\\gane.txt");
prop.store(fw,null);
fw.close();
}
}
}