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();
        }
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号