//仅作为学习笔记
/*
Properties 是 hashtable 的子类
也就是说它具备map 集合的特点 而且它里面存储的键值对都是字符串
是集合中和IO技术相结合的集合容器
该对象的特点:可以用于键值对形式的配置文件
那么在加载数据时 需要数据有固定格式 键=值。
*/
import java.io.*;
import java.util.*;
class PropertiesDemo
{
public static void main(String []args) throws IOException
{
loadDemo();
//method_1();
//setAndGet();
}
public static void loadDemo() throws IOException
{
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("info.txt");
//将流中的数据加载进集合
prop.load(fis);
//System.out.println(prop);
prop.list(System.out);
}
//演示 如何将流中的数据存储到集合中
//想要将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]);
//System.out.println(line);
}
bufr.close();
System.out.println(prop);
}
//设置和获取元素
public static void setAndGet()
{
Properties prop = new Properties();
prop.setProperty("zhangshan","30");
prop.setProperty("lisi","39");
//System.out.println(prop);
String value = prop.getProperty("lisi");
//System.out.println(value);
Set<String> names = prop.stringPropertyNames();
for(String s : names)
{
System.out.println(s + ":"+ prop.getProperty(s));
}
}
}
/*
Properties
用于记录应用程序运行次数
如果使用次数已到 那么给出注册提示
很容易想到的就是:计算器
可是该计数器定义在程序中 随着程序的运行而在内存中存在 并进行自增
可是随着该应用程序的退出 该计数器也在内存中消失
下一次在启动该程序 用重新开始从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);
//FileInputStream fis = new FileInputStream("Count.properties");
//这种扩展名文件内部的配置信息一定是键值对形式
prop.load(fis);
int count = 0;
String value = prop.getProperty("time");//其实这个键值不存在
if(value !=null)
{
count = Integer.parseInt(value);
if(count>=5)
{
System.out.println("次数已到上限");
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStream fos = new FileOutputStream(file);
prop.store(fos,"");
fos.close();
fis.close();
}
}