8.Properties类

1.Properties

1.Propertiesg概述:

  • 是一个Map体系的集合类
  • Properties可以保存到流中或从流中加载

2.练习:Properties作为Map集合使用

package Study09;

import java.util.Properties;
import java.util.Set;

/*Properties作为Map集合使用*/
public class PropertiesDemo {
    public static void main(String[] args) {
        //创建集合对象
//        Properties<String,String> pts = new Properties<String,String>();//错误
        Properties prop = new Properties();

        //存储元素
        prop.put("001","迪丽热巴");
        prop.put("002","王冰冰");
        prop.put("003","古力娜扎");

        //遍历集合
        Set<Object> o = prop.keySet();
        for (Object key:o){
            Object value = prop.get(key);
            System.out.println(key+","+value);
        }
    }
}

3.Properties作为集合的特有方法:

方法名 说明
Object setPropeerty(String key,String value) 设置集合的键和值,都是String类型,底层调用Hashtable方法put
String getProperty(String key) 使用此属性列表中指定的键搜索属性
Set<String>stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
  • 代码示例
package Study09;

import java.util.Properties;
import java.util.Set;

/*
| `Object setPropeerty(String key,String value)` | 设置集合的键和值,都是String类型,底层调用Hashtable方法put   |
| `String getProperty(String key)`               | 使用此属性列表中指定的键搜索属性                             |
| `Set<String>stringPropertyNames()`             | 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串 |*/
public class PropertiesDemo01 {
    public static void main(String[] args) {
        //创建集合对象
        Properties prop = new Properties();
        //| `Object setPropeerty(String key,String value)` | 设置集合的键和值,都是String类型,底层调用Hashtable方法put   |
        prop.setProperty("001","迪丽热巴");
        /*
        Object setProperty(String key, String value) {
        return put(key, value);
        }

        Object put(Object key, Object value) {
        return map.put(key, value);
        }
        */
        prop.setProperty("002","王冰冰");
        prop.setProperty("003","哈尼克孜");

        //| `String getProperty(String key)`               | 使用此属性列表中指定的键搜索属性                             |
//        System.out.println(prop.getProperty("001"));//迪丽热巴
//        System.out.println(prop.getProperty("0011"));//null
//
//
//        System.out.println(prop);//{001=迪丽热巴, 002=王冰冰, 003=哈尼克孜}

        //| `Set<String>stringPropertyNames()`             | 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串 |
        Set<String> names = prop.stringPropertyNames();
        for (String key:names){
            String value = prop.getProperty(key);
            System.out.println(key+","+value);
        }
    }
}

4.Properties和IO流结合的方法

方法名 说明
void load(InputStream inStream) 从输入字节流读取属性列表
void load(Reader reader) 从输入字符流读取属性列表(键和元素对)
void store(OutputStream out,String comments) 将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(InputStream)方法的格式写入输出字节流
void store(Writer writer,String comments) 将此属性列表(键和元素对)写入此Properties表中,以适合使用load(Reader)方法的格式写入输入字符流。

以字符流为例:

package Study09;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

/*
| void load(Reader reader)                     | 从输入字符流读取属性列表(键和元素对)                       |
| void store(Writer writer,String comments)    | 将此属性列表(键和元素对)写入此Properties表中,
                                                 以适合使用load(Reader)方法的格式写入输入字符流。 |
*/
public class Properties02 {
    public static void main(String[] args) throws IOException{
        //把集合中的数据保存到文件
        myStore();
        //把文件中的数据加载到集合
        myLoad();
    }

    private static void myLoad() throws IOException{
        //创建集合对象
        Properties prop = new Properties();
        //| void load(Reader reader)     | 从输入字符流读取属性列表(键和元素对)
        FileReader fr = new FileReader("Study\prop.txt");
        prop.load(fr);
        fr.close();
        System.out.println(prop);
    }

    private static void myStore() throws IOException {
        //创建集合对象并添加集合元素
        Properties prop = new Properties();

        prop.setProperty("001","迪丽热巴");
        prop.setProperty("002","王冰冰");
        prop.setProperty("003","哈尼克孜");

        //| void store(Writer writer,String comments)
        FileWriter fw = new FileWriter("Study\prop.txt");
        prop.store(fw,null);
        //释放资源
        fw.close();
    }
}

5.案例:游戏次数

需求:请写程序实现猜数字小游戏,只能玩3次,如果还想玩,提示:游戏试玩已结束,想玩请充值(www.handsomeboy.com)

思路:

  • 写一个游戏类,里面有一个猜数字的小游戏
  • 写一个测试类,测试类中有main()方法,main()方法中按照下面步骤完成:
    • A:从文件中读取数据到Properties集合,用load()方法实现
      • 文件以及存在:game.txt
      • 里面有一个数据值:count=1
    • B:通过Properties集合获取到玩游戏的次数
    • C:判断次数是否达到3次了
      • 如果到了,给出提示:游戏试玩已结束,想玩请充值(www.handsomeboy.com)
      • 如果不到3次:
        • 玩游戏
        • 次数+1,重新写回文件,用Properties的store()方法实现

代码:

//game.txt
#Wed Dec 01 10:59:13 CST 2021
count=0
//GussNumber类
package Study10;

import java.util.Random;
import java.util.Scanner;

public class GussNumber {
    private GussNumber(){

    }
    public static void start(){
        //随机生成一个1~100的数
        Random r = new Random();
        int Number = r.nextInt(100)+1;
        //循环进行猜数字
        while (true){
            //输入数据
            System.out.println("请输入猜的整数");
            Scanner sc = new Scanner(System.in);
            int value = sc.nextInt();
            //使用分支语句进行判断
            if (value==Number){
                System.out.println("恭喜你,猜对了");
                break;
            }else if (value>Number){
                System.out.println("猜的数字:"+value+"大了");
            }else if (value<Number){
                System.out.println("猜的数字:"+value+"小了");
            }
        }
    }
}

//测试类
package Study10;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

/*需求:请写程序实现猜数字小游戏,只能玩3次,如果还想玩,提示:游戏试玩已结束,想玩请充值(www.handsomeboy.com)

思路:
- 写一个游戏类,里面有一个猜数字的小游戏
- 写一个测试类,测试类中有main()方法,main()方法中按照下面步骤完成:
	- A:从文件中读取数据到Properties集合,用load()方法实现
		- 文件以及存在:game.txt
		- 里面有一个数据值:count=1
	- B:通过Properties集合获取到玩游戏的次数
	- C:判断次数是否达到3次了
		- 如果到了,给出提示:游戏试玩已结束,想玩请充值(www.handSomeBoy.com)
		- 如果不到3次:
			- 玩游戏
			- 次数+1,重新写回文件,用Properties的store()方法实现*/
public class PropertiesTestDemo {
    public static void main(String[] args) throws IOException {
        //- A:从文件中读取数据到Properties集合,用load()方法实现
        Properties prop = new Properties();
        FileReader fr = new FileReader("Study\game.txt");
        prop.load(fr);

        fr.close();

        //- B:通过Properties集合获取到玩游戏的次数
        String count = prop.getProperty("count");
        int number = Integer.parseInt(count);
        //- C:判断次数是否达到3次了
        if (number>=3){
            //- 如果到了,给出提示:游戏试玩已结束,想玩请充值(www.handSomeBoy.com)
            System.out.println("游戏试玩已结束,想玩请充值(www.handSomeBoy.com)");
        }else {
            //- 如果不到3次:
            //- 玩游戏
            GussNumber.start();
            //- 次数+1,重新写回文件,用Properties的store()方法实现
            number++;
            prop.setProperty("count",String.valueOf(number));
            FileWriter fw = new FileWriter("Study\game.txt");
            prop.store(fw,null);
            fw.close();
        }

    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>