Properties对象的使用
Properties是集合中和IO技术相结合的集合容器,该对象的特点是:可以用于键值对形式的配置文件,在加载数据时,需要有固定的格式,即:键=值。 Properties是hashTable的子类,也就是它具备Map集合的特点,而且它里面存储的键值对都是字符串。示例:设置和获取元素 publicvoid setAndGet(){ Pro
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();
}
}
}
更多推荐
所有评论(0)