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