package string.itcastio; import java.io.*; import java.util.*; /* * Properties是hashTable的子类 * 也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串 * 是集合中和IO技术相结合的集合容器 * 该对象的特点:可以用于键值对形式的配置文件。 * 那么在加载数据时,需要数据有固定格式:键=值 */ public class PropertiesDemo { public static void main(String[] args) throws IOException { // setAndget(); // method_1(); //loadDemo(); runCount(); } /** * 设置与获取元素 */ public static void setAndget() { Properties properties = new Properties(); properties.setProperty("zhangsan", "001"); properties.setProperty("lisi", "002"); System.out.println(properties); // getProperty根据指定key获取value String value = properties.getProperty("lisi"); System.out.println(value); // setProperty修改指定key的value properties.setProperty("lisi", "007"); // stringPropertyNames从java1.6开始才出现的 for (String name : properties.stringPropertyNames()) { System.out.println("key:" + name + "-value:" + properties.getProperty(name)); } } /** * 如何将流中的数据存储到集合中 想要将info.txt中的键值数据存到集合中进行操作 1,用一个流和info.txt文件关联。 * 2,读取一行数据,将该行数据用“=”号经行分割 3,等号左边作为键,右边作为值。存入到Properties 集合中去 */ public static void method_1() throws IOException { FileReader fr = new FileReader("info.txt"); BufferedReader br = new BufferedReader(fr); Properties properties = new Properties(); String line = null; while ((line = br.readLine()) != null) { String[] keyvalue = line.split("="); properties.setProperty(keyvalue[0], keyvalue[1]); } System.out.println(properties); br.close(); } /** * 使用load加载txt文件内容到Properties * * @throws IOException */ public static void loadDemo() throws IOException { File file = new File("info.txt"); if (!file.exists()) { file.createNewFile(); } Properties properties = new Properties(); properties.load(new FileInputStream(file)); properties.setProperty("lisi", "ii"); FileOutputStream fos = new FileOutputStream(file); properties.store(fos, "xixi"); System.out.println(properties); fos.close(); } /** * 模拟软件使用次数 * * @throws IOException */ public static void runCount() throws IOException { File file = new File("count.ini"); if (!file.exists()) { file.createNewFile(); } Properties properties = new Properties(); FileInputStream fis = new FileInputStream(file); properties.load(fis); int count = 0; String value = properties.getProperty("time"); if (value != null) { //System.out.println(value); count = Integer.parseInt(value); if (count >= 5) { System.out.println("使用已经到期了!请续费.."); return; } } count++; //System.out.println(count); properties.setProperty("time", "" + count); FileOutputStream fos = new FileOutputStream(file); properties.store(fos, ""); fos.close(); fis.close(); } }