A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张 涛 中级黑马   /  2012-9-6 17:35  /  1365 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张 涛 于 2012-9-23 07:27 编辑

本地的配置文件,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

为什么啊?

4 个回复

倒序浏览
当创建FileWriter对象时,因为info.txt已经存在了,所以它会新建一个空的info.txt,把原来的覆盖掉;
所以在把a的值修改后再创建Filewriter对象:
FileReader fr = new FileReader("D:\\info.txt");
Properties prop = new Properties();
prop.load(fr);
prop.setProperty("a", "1");     //先修改a的值
FileWriter fw = new FileWriter("D:\\info.txt"); //然后创建fw
prop.store(fw, "mic");
回复 使用道具 举报
楼上说的狠对,FileWriter fw = new FileWriter("D:\\info.txt");这个写在前面就会重新创建一个文件,如果你想要续写可以这样
FileWriter fw = new FileWriter("D:\\info.txt",true);这样就可以了,这个是如果没有文件则也会创建一个,如果有,则续写。
回复 使用道具 举报
给楼主画了流程图

回复 使用道具 举报
哦,明白了,扫噶。结贴。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马