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();
}
}