黑马程序员--Properties介绍
--------- android培训、java培训、期待与您交流! ---------
Properties使用
1,简介
public class Properties extends Hashtable,Properties是hashtable的子类。
也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。
2,Properties类的重要方法
- Properties 类存在于胞 Java.util 中,该类继承自 Hashtable
1. getProperty ( String key) , 用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件(.properties 文件)进行装载来获取该文
件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。
4. store ( OutputStream out, String comments) , 以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素
对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。
5. clear () ,清除所有装载的 键 - 值对。该方法在基类中提供。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 练习:限制程序运行次数。当运行次数到达5次时,给出,请您注册的提示。并不再让该程序执行。 */ import java.io.*; import java.util.*; class PropertiesDemo { public static void main(String[] args) throws IOException { //method_1(); loadDemo(); } public static void loadDemo()throws IOException { Properties prop = new Properties(); FileInputStream fis = new FileInputStream("info.txt"); //将流中的数据加载进集合。 prop.load(fis); prop.setProperty("wangwu","39"); FileOutputStream fos = new FileOutputStream("info.txt"); prop.store(fos,"haha"); // System.out.println(prop); prop.list(System.out); fos.close(); fis.close(); } //演示,如何将流中的数据存储到集合中。 //想要将info.txt中键值数据存到集合中进行操作。 /* 1,用一个流和info.txt文件关联。 2,读取一行数据,将该行数据用"="进行切割。 3,等号左边作为键,右边作为值。存入到Properties集合中即可。 */ public static void method_1()throws IOException { BufferedReader bufr = new BufferedReader(new FileReader("info.txt")); String line = null; Properties prop = new Properties(); while((line=bufr.readLine())!=null) { String[] arr = line.split("="); ///System.out.println(arr[0]+"...."+arr[1]); prop.setProperty(arr[0],arr[1]); } bufr.close(); System.out.println(prop); } // 设置和获取元素。 public static void setAndGet() { Properties prop = new Properties(); prop.setProperty("zhangsan","30"); prop.setProperty("lisi","39"); // System.out.println(prop); String value = prop.getProperty("lisi"); //System.out.println(value); prop.setProperty("lisi",89+""); Set<String> names = prop.stringPropertyNames(); for(String s : names) { System.out.println(s+":"+prop.getProperty(s)); } } }
3,练习:用于记录应用程序运行次数。如果使用次数已到,那么给出注册提示。
思路分析:
很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。
下一次在启动该程序,又重新开始从0计数。
这样不是我们想要的。
现在要程序即使结束,该计数器的值也存在。
下次程序启动在会先加载该计数器的值并加1后在重新存储起来。
所以要建立一个配置文件。用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件形式存储,使用io技术。
那么map+io -->properties.
配置文件可以实现应用程序数据的共享。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import java.io.*; import java.util.*; class RunCount { public static void main(String[] args) throws IOException { Properties prop = new Properties(); File file = new File("count.ini"); if(!file.exists()) file.createNewFile(); FileInputStream fis = new FileInputStream(file); prop.load(fis); int count = 0; String value = prop.getProperty("time"); if(value!=null) { count = Integer.parseInt(value); if(count>=5) { System.out.println("您好,使用次数已到,拿钱!"); return ; } } count++; prop.setProperty("time",count+""); FileOutputStream fos = new FileOutputStream(file); prop.store(fos,""); fos.close(); fis.close(); } }
--------- android培训、java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/