黑马程序员--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 () ,清除所有装载的 键 - 值对。该方法在基类中提供。
方法应用
/*
练习:限制程序运行次数。当运行次数到达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.

配置文件可以实现应用程序数据的共享。

记录软件使用次数
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/

 

posted on 2012-08-09 16:46  doublewinwin  阅读(191)  评论(0编辑  收藏  举报