Java中的Properties集合
1. Properties集合的特点:
(1) 该集合的键和值都是字符串类型的;
(2) 集合中的数据可以保存到流中,或者从流中获取;
2. 通常该集合用于操作以键值对形式存在的配置文件。
3. 4.
配置文件:就是存储配置信息的文件。XML文件、数据库 构造方法:
5. 常用方法:
(1) 存储元素:setProperty
(2) 修改元素:setProperty键相同,值不同即是修改。 (3) 取出元素:getProperty
(4) list方法:主要用于调试。
参数是PrintStream ,默认的输出设备。如参数为 System.out
例如:public static void main(String[] args) { //下午9:15:01 Properties pro = new Properties(); pro = System.getProperties(); pro.list(System.out);
}
(5) System.getProperties()返回系统的所有的配置信息,返回类型为Properties集合,
在调用list方法就可打印到控制台(System.out)上。
(6) 存储方法store方法:持久化,将集合中的字符串键值信息持久化存储到文件中,
因此需要关联输出流。字节输出流或者字符输出流。
Properties p = new Properties();
p.setProperty(\,\); p.setProperty(\,\); p.setProperty(\,\); p.setProperty(\,\); p.setProperty(\,\);
FileOutputStream fos = new FileOutputStream(\);//字节输FileWriter fw = new FileWriter(\);//字符输出流 p.store(fos,\); p.store(fw,\); fos.close(); fw.close();
出流
(7) load方法:将流中的信息存储到Properties集合中。
load方法的原理:
private static void myLoad(Properties p) throws IOException {
System.out.println(\
BufferedReader bufr = new BufferedReader(new FileReader(\ String line = null; while((line = bufr.readLine()) != null) { if(line.startsWith(\ continue; } String[] arr = line.split(\ System.out.println(arr[0] +\ p.setProperty(arr[0],arr[1]); } bufr.close(); }
6. 集合中的数据来自一个文件,注意:必须要保证该文件中的数据是键值对,需要使用输
入流即读取流InputStream或者Reader。
FileInputStream fis = new FileInputStream(\ p.load(fis);//将流中的信息存储到Properties集合中
p.list(System.out);
Properties集合可以和IO流结合实现读取和写入。 7. 对已有的配置文件的信息进行修改:
思路:读取这个配置文件,然后将这个文件中的键值数据信息存储到集合中,再通过集合对数据进行修改,最后通过IO流将修改过的数据存储到文件中。
File file = new File(\ FileReader fr = new FileReader(file); Properties p2 = new Properties(); //FileWriter fw1 = new FileWriter(file,true);
//true代表的是append,这样的话原来的文件仍然存在,不是新建一个空的文件了。因为Properties集合有唯一性,所以键不能重名,故也只是修改
p2.load(fr); p2.setProperty(\
FileWriter fw1 = new FileWriter(file);//这句话一定要放在p2.load(fr);下面。
//因为创建一个输出流,相当于创建了一个新的文件,
又因为名字一样,所以这样把原来的文件覆盖了,使原有的数据都消失了,变成了一个新的空的文件。
//从而导致集合Properties中也为空,后面的修改语句
变成了添加语句了。
p2.store(fw1,\ p2.list(System.out); fw1.close(); fr.close();
8. FileWriter fw1 = new FileWriter(file);是创建一个名字与file同名的空文件,也就是把file
覆盖掉。FileWriter fw1 = new FileWriter(file,true);是在原来file文件基础上进行添加,所以原来的file文件并没有改变,也没有创建新的文件。
9. 定义功能,获取一个应用程序的运行次数,如果超过5次,给出“使用次数已到,请注
册”的提示,并不要运行程序。
思路:①应该有个计数器,每次程序运行一次需要计数一次,并且是在原有的基础上加一次。②计数器就是一个变量:程序启动时候,进行计数,计数器必须存在于内存并进行运算。可是运行一结束,计数器就消失了。再次启动该程序,计数器就会重新被初始化了。而我们需要的是多次启动同一个应用程序,使用的是同一个计数器,这就需要计数器的生命周期变长,从内存存储到硬盘文件中。 ③如何使用这个计数器呢?
首先,程序启动时,应该先读取这个用于记录计数器信息的配置文件,获取上一次计数器的次数,并进行运行次数的判断;其次,计数器自增,并将自增后的次数重新存储到配置文件中。
④文件中的信息该如何进行存储并体现呢?
直接存储值可以,但是含义不明确,所以很有必要对每个值取个名字。这就有了键和值
相关推荐: