当前位置: 代码迷 >> J2SE >> 很奇怪的有关问题,关于Properties
  详细解决方案

很奇怪的有关问题,关于Properties

热度:1570   发布时间:2013-02-25 00:00:00.0
很奇怪的问题,关于Properties
本地的配置文件,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到内存了。
所以都保留了下来。
  相关解决方案