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 stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键集对应的值是字符串类型

代码案例:

//特有方法:
        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();
        }
    }
}
posted @ 2022-08-04 20:43  青弦c  阅读(42)  评论(0)    收藏  举报