properties

Properties

是hashtable的子类
*也就是说它具备了map集合的特点,并且存储的键值对都是字符串
是集合中和IO技术相结合的集合容器。
特点:可以用于键值对形式的配置文件


功能:
setProperty(key,value);//添加新的键值对
getProperty(key);//返回某个键所对应的值
stringPropertyNames();//返回所有的key键
load();将流中的数据加载进集合
store(OutputStream out, String comments):将此 Properties 表中的属性列表(键和元素对)写入输出流。
store(Writer writer, String comments):同上


演示:
如何将流中的数据存储到集合中,并在集合中修改后也可以同时修改文件中的数据
提示思路:|–1.用一个流和文件关联。
|–2.读取一行数据,将该行数据用“=”进行切割。
|–3.等号左边作为键,右边作为值。存入到Properties集合中即可。
*load()自动封装好了以上功能
{
Properties prop = new Properties();
FileInputStream fis = new FileInputStream(“demo.txt”);
prop.load(fis);
prop.setProperty(“b”,”6”);
FileOutputStream fos = new FileOutputStream(“demo.txt”);
prop.store(fos,”idea”);
prop.list(System.out);
fos.close();
fis.close();
}


演示练习

/**

  • 此代码演示要求如下:
  • 应用程序可免费使用5次,5次以后会提示“Sorry”并中止程序。
  • 原理实现:
  • 每次用户打开都会将count.ini文件中的time值加一(无文件则自动新创建)
  • /
    import java.io.
    ;
    import java.util.Properties;

public class PropertiesTest {

public static void main(String[] args) throws IOException {
    Properties pr = new Properties();
    File f = new File("C:\\Users\\IO流\\测试数据\\count.ini");
    if(!f.exists())
    {
        f.createNewFile();
    }
    FileInputStream fis = new FileInputStream(f);
    pr.load(fis);
    int count = 0;
    String value = pr.getProperty("time");
    if(value != null)
    {
        count = Integer.parseInt(value);
        if(count >= 5)
        {
            System.out.println("Sorry");
            return ;
        }
    }
    System.out.println("程序启动成功");
    count++;
    pr.setProperty("time",count+"");
    FileOutputStream fos = new FileOutputStream("C:\\Users\\IO流\\测试数据\\count.ini");
    pr.store(fos, "Data update");
    fis.close();
    fos.close();

}

}