Properties是集合中和IO技术相结合的集合容器,该对象的特点是:可以用于键值对形式的配置文件,在加载数据时,需要有固定的格式,即:键=值。

         Properties是hashTable的子类,也就是它具备Map集合的特点,而且它里面存储的键值对都是字符串。

示例:设置和获取元素

         publicvoid setAndGet(){

         Propertiesprop = new Properties();

         prop.setProperty("zhangsan","20");

         prop.getProperty("zhangsan");

         Set<String>names = prop.stringPropertyNames();//获取所有的数据,返回一个set集合

         for(Strings :names){

                   System.out.println(s+"..."+prop.getProperty(s));

         }

         }

 

练习一:

Properties存取配置文件

需求:将流中的数据存储到集合中,想要将info.txt中的键值数据存到集合中进行操作。

思路:

1.用一个流和info.txt文件关联

2.读取一行数据,将该行数据用“=”进行切割

3.等号左边为键,右边为值,存入到Properties集合中即可。

方法一:

package Properties;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.Properties;

publicclass PropTest {

   publicstaticvoid main(String[]args) {

     method_1();

   }

   publicstaticvoid method_1(){

     BufferedReader bufr=null;

     try {

        bufr = new BufferedReader(

             new FileReader("E:\\info.txt"));

        String line = null;

        Properties prop = new Properties();

        while((line=bufr.readLine())!=null){

          String[] arr = line.split("=");

          prop.setProperty(arr[0], arr[1]);

        }

        System.out.println(prop);

     } catch (Exceptione) {

        e.printStackTrace();

     }finally{

        try {

          bufr.close();

        } catch (IOExceptione) {

          e.printStackTrace();

        }

     }

   }

}

方法二:

publicstaticvoid method_2(){

     FileInputStream fis = null;

     try {

        fis = new FileInputStream("E:\\info.txt");

        Properties prop = new Properties();

        prop.load(fis);//将流中的数据加载进集合

        prop.setProperty("name", "lisi");//此时改变的是内存中的内容,而不是文件中的内容

        FileOutputStreamfos = newFileOutputStream("E:\\info.txt");

        prop.store(fos, "");

        prop.list(System.out);

        fos.close();

        fis.close();

     } catch (Exceptione) {

        e.printStackTrace();

     }

   }

练习二:

       记录应用程序运行次数,如果使用次数已到,那么给出注册提示。

思路:即使程序结束,计数器的值也存在。下一次程序启动会先加载该计数器的值并加1后重新存储起来,所以要建立一个配置文件,用于记录该软件的使用次数。该配置文件使用键值对的形式,这样便于阅读并操作数据,并且可以实现应用程序数据的共享。

键值对数据是Map集合。

数据是以文件的形式存数的,使用IO技术。所以:

Map + IO =Properties

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Properties;

publicclass RunCount {

   publicstaticvoid main(String[]args) {

     try {

     Properties prop = new Properties();

     File file = new File("count.ini");

     if(!file.exists())

          file.createNewFile();

     FileInputStream fis = new FileInputStream(file);

     prop.load(fis);

     intcount=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();

        } catch (IOExceptione) {

          e.printStackTrace();

        }

   }

}

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐