本地的配置文件,info.txt,里面的内容是:
a=2
b=3
c=4
用properties里的方法,加载配置文件,然后修改参数,然后存储。
第一种是这样:
FileReader fr = new FileReader("D:\\info.txt");
Properties prop = new Properties();
prop.load(fr);
prop.setProperty("a", "1");
FileWriter fw = new FileWriter("D:\\info.txt");
prop.store(fw, "mic");
结果是,本地文本中的内容是
a=1
b=3
c=4
第二种这样:
FileReader fr = new FileReader("D:\\info.txt");
FileWriter fw = new FileWriter("D:\\info.txt");
Properties prop = new Properties();
prop.load(fr);
prop.setProperty("a", "1");
prop.store(fw, "mic");
结果是,本地文本中的内容只剩下:
a=1
为什么啊?
------解决方案--------------------------------------------------------
第二种,你文件存在,new FileWriter("D:\\info.txt");相当于覆盖了文件,那fr相当于是空的流,从里面是读不出什么数据的,那prop.load的时候就是空的了,最后保存的时候就只有你设置的那个值。你可以
new FileWriter("D:\\info.txt",true); 这个表示在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数据的 boolean 值。 就不会出现这种情况
------解决方案--------------------------------------------------------
这句会把文件内容冲掉。
FileWriter fw = new FileWriter("D:\\info.txt");
1里你先用prop.load(fr);把文件内容load到内存了。
所以都保留了下来。