------------------------------Android培训 Java培训 期待与您的交流!---------------------------
/*
Properties是hashtable的子类
它具有map集合的特点,而且他里面存储的键值对都是字符串。
是集合和IO技术相结合的集合容器。
该对象的特点:可以用于硬盘上键值对形式的配置文件。
setProperty("键","值");
Set<string> stringPropertyNames():返回对象的全部键的集合
String getProperty("键"): :获取键对应的值
那么在加载数据时,需要数据有固定格式,键=值
*/
import java.io.*;
import java.util.*;
class PropertiesDemo
{
public static void main(String[] args)
{
getPro();
}
public static void getPro()
{
Properties pro=new Properties(); //创建一个Properties集合对象
pro.setProperty("shengyi","21"); //添加一个键值对
pro.setProperty("linyong","22");
//Set<String> sets=pro.stringPropertyNames(); //返回键字符串的集合
//for (String s:sets)
//{
// System.out.println(s+":"+pro.getProperty(s)); //获取键对应的值
//}
System.out.println(pro);
}
}
/*
演示,如何将流中的数据存储到集合中,
想要将info.txt中键值数据存到集合中操作。
1.用一个流和info.txt文件关联。
2.读取一行数据,将该行数据用“=”进行切割。
3.等号左边作为键,右边作为值,存入到Properties集合中即可
*/
import java.io.*;
import java.util.*;
class PropertiesFun
{
public static void main(String[] args) throws IOException
{
propertiesGet();
}
//Properties中利用字节流直接将文件加载进集合,还能将改变的内存的结果存到流当中。
public static void propertiesGet() throws IOException
{
FileInputStream fis=new FileInputStream("F:\\properties.txt");
Properties pro=new Properties();
pro.load(fis); //将流加载进集合
//System.out.println(pro);
//pro.list(System.out);
//实现对配置文件做修改,并保存回去,在文件以#开头的属于注释内容
pro.setProperty("name1","fsy100"); //并没有将改变的值保存配置文件中
FileOutputStream fos=new FileOutputStream("F:\\properties.txt");
pro.store(fos,"变化"); //注释信息是中文,需注意文件的编码集
pro.list(System.out);
fis.close();
fos.close();
}
public static void funProperties()throws IOException
{
Properties pro=new Properties();
BufferedReader br=new BufferedReader(new FileReader("F:\\properties.txt")); //与配置文件相关联
String line=null;
while ((line=br.readLine())!=null) //读取到每一行的键值对
{
String[] aa=line.split("="); //通过=切割字符串
pro.setProperty(aa[0],aa[1]); //切割后的前面做键,后者做值
}
br.close();
System.out.println(pro); //输出是无序的
}
}
/*
用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
很容易想到的是计数器。
可以计数器的缺点是:
1.虽然程序的运行而在内存中存在,并进行自增。但是该计数器是定义在程序中的
2.随着该应用程序的退出,该计数器也在内存中消失了。
3.下一次启动程序,又是重新从0开始计数
达不到效果
程序几时结束,该计数器的值也存在。
下次程序启动后会先加载该计数器的值并加1,在重新存储起来。
所以要建立一个配置文件。用于记录该软件的是使用次数.
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对是Map集合
数据是以文件形式存储,io技术。
Properties就是Map与IO的结合
配置文件可以实现应用程序数据的共享。
*/
import java.io.*;
import java.util.*;
class RunCount
{
public static void main(String[] args) throws IOException
{
Properties pro=new Properties(); //创建一个Properties集合
File file=new File("F:\\count.propreties"); //将关联文件用File对象封装
if (!file.exists())
file.createNewFile(); //判断是否存在,不存在则创建
FileInputStream fis=new FileInputStream(file); //关联一个存在的文件对象;
pro.load(fis); //载入流对象
int count=0; //临时统计变量
String countvalue=pro.getProperty("count"); //当配置文件中没有时,会创建一个,初始value为null;
if(countvalue!=null)
{
count=Integer.parseInt(countvalue); //将String类型的countvalue转为Integer
if(count>=3){
System.out.println("请注册");
return; //得到次数关闭软件
}
}
count++; //每次使用后,count++
FileOutputStream fos=new FileOutputStream(file);
pro.setProperty("count",count+""); //将改变后的值,写回集合
pro.store(fos,"bianhua"); //将pro的改变写入配置文件
fis.close(); //关闭流
fos.close();
}
}