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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-12 12:27  /  1372 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void loadDemo() throws Exception{
  FileInputStream fis=new FileInputStream("f:\\info.txt");
  FileOutputStream fos=new FileOutputStream("f:\\info.txt");
  Properties prop=new Properties();
  prop.load(fis);
  prop.setProperty("wangwu", "60");
  prop.store(fos, "studentinfo");//将修改后的键值写入到配置文件,怎么原来的键值都没了???
  System.out.println(prop);
  fis.close();
  fos.close();
}
你试一试这个方法有没有问题?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

2 个回复

倒序浏览
hel 中级黑马 2013-11-12 15:41:07
沙发
prop.setProperty("wangwu", "60");
你这个只操作了一个数据,

所以原来的数据当你在
FileOutputStream fos=new FileOutputStream("f:\\info.txt");
这句话的时候已经被覆盖了

所以文件中只有wangwu的数据

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
FileInputStream fis=new FileInputStream("f:\\info.txt");//先为你的文件创建一个输入流对象
FileOutputStream fos=new FileOutputStream("f:\\info.txt");//创建输出流对象,如果f:\\盘下有相同文件
                                                             则原有文件将会被覆盖!

Properties prop=new Properties();
prop.load(fis);//这时候你加载的是已经被覆盖的那个文件(里面没有内容)

prop.setProperty("wangwu", "60");
prop.store(fos, "studentinfo");//将内存中已经修改后的文件存储到info.txt(已经被覆盖,里面没有内容)
                                //那么在内存中自然没有其他键值对,只有(wangwu,60)这个键值对,存储
                                //的自然就是wangwu,60


FileOutputStream fos=new FileOutputStream("f:\\info.txt");
prop.store(fos, "studentinfo");
//如果文件输出流放到存储的上面,文件一样会被覆盖(里面没有内容)
//但是这时候内存中已经加载了原先info.txt中的所有内容,再存储的时候只是把内存中的内容写到info.txt中去

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马