黑马程序员-Properties类-配置文件读写-限定软件运行次数

Properties简述
public class Properties
extends Hashtable<Object,Object>Properties
 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。  
properties是hashtable的子类。也就是说他具备map集合的特点。而且他里面存储的键值对是字符串
给对象的特点:可以用于键值对形式的配置文件。
properties存取配置文件
想要将Info.txt中键值数据存到集合中进行操作。
  1. 用一个流和Info.txt文件关联。
  2. 读取一行数据,将该行数据用”=“进行分割。
  3. 等号左边作为键,右边作为值。存入到properties集合中即可。
public class PropertiesDemo {

	public static void main(String[] args) {
		// method_1();
		method_2();
	}

	public static void method_3() {
		Properties pro = new Properties();
		File file = new File("PropertiesInfo.txt");
		try {
			pro.load(new FileInputStream(file));
			pro.setProperty("haha", "56");
			pro.list(System.out);
			pro.store(new FileOutputStream(file), "Test");
		} catch (Exception e) {
			throw new RuntimeException("文件读写异常");
		}
	}

	public static void method_2() {
		File file = new File("PropertiesInfo.txt");
		BufferedReader bufr = null;
		FileOutputStream fouts = null;
		Properties pro = new Properties();
		try {
			bufr = new BufferedReader(new FileReader(file));
			String str = null;
			while((str = bufr.readLine()) != null){
				String[] value = str.split("=");
				pro.setProperty(value[0], value[1]);
			}
			fouts = new FileOutputStream(file);
			pro.setProperty("haha", "12");
			pro.list(System.out);
			pro.store(fouts, "test");
		} catch (Exception e) {
			throw new RuntimeException("文件读写失败");
		} finally {
			if (bufr != null) {
				try {
					bufr.close();
				} catch (IOException e) {
					throw new RuntimeException("流关闭异常");
				}
				if (fouts != null) {
					try {
						fouts.close();
					} catch (IOException e) {
						throw new RuntimeException("流关闭异常");
					}
				}
			}
		}
	}

	public static void method_1() {
		Properties pro = new Properties();

		pro.setProperty("王五", "64");
		pro.setProperty("李四", "38");
		// System.out.println(pro);
		System.out.println(pro.get("李四"));
		pro.setProperty("李四", "65");
	}
}


Properties练习
用于记录应用程序运行的次数。如果使用次数已到,那么给出注册提示。
/*
 * 用于记录应用程序运行次数。
 *如果使用次数已到,那么给出注册提示。
 *思路:
 *很容易想到计数器,但是计数器在程序中,随着程序的运行在内存中存在,并进行自增。
 *可是随着该程序的退出,该计数器在内存中消失了。
 *所以要建立一个配置文件,用于记录该软件的使用次数。
 * 
 */

public class PropertiesTest {

	public static void main(String[] args) {
		
		Properties pro = new Properties();
		FileOutputStream fouts = null;
		File file = new File("PropertiesTest.ini");
		try {
			if(!file.exists()){
				file.createNewFile();
			}
			int count = 0;
			pro.load(new FileReader(file));
			String value = pro.getProperty("time");
			if(value != null)
				 count = Integer.parseInt(value);
			if(count >= 5){
				System.out.println("您好,请注册软件,否则不能提供服务!");
				return;
			}
			count++;
			pro.setProperty("time", count+"");
			fouts =new FileOutputStream(file);
			pro.store(fouts, "");
		} catch (Exception e) {
			throw new RuntimeException("文件读写异常");
		}finally{
			if(fouts != null){
				try {
					fouts.close();
				} catch (IOException e) {
					throw new RuntimeException("流关闭异常");
				}
			}
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值