黑马程序员技术交流社区

标题: Properties集合疑问 [打印本页]

作者: 一叶障目    时间: 2014-11-19 10:56
标题: Properties集合疑问
本帖最后由 一叶障目 于 2014-11-19 11:00 编辑

  1. public static void demo5() throws IOException{
  2.   File file=new File("info");
  3.   if(!(file.exists())){
  4.    file.createNewFile();
  5.   }
  6.   FileReader fr=new FileReader(file);
  7. //FileWriter fw=new FileWriter(file);      A
  8.   Properties pro=new Properties();
  9.   pro.load(fr);
  10.   pro.setProperty("seven","seven");
  11.   FileWriter fw=new FileWriter("info");//B
  12.   pro.store(fw,"info");
  13.   pro.list(System.out);
  14.   fr.close();
  15.   fw.close();
  16.   
  17. }
复制代码
该静态函数的功能是对已有的配置文件中的信息进行修改;
   1、读取这个文件,文件中原存在数据
  2、并将这个文件中的键值数据存储到集合中
  3、通过集合对数据进行修改,该数据存在就修改,不存在就添加
  4、再通过流将修改后的数据存储的到文件中去
现在的问题时将 FileWriter fw=new FileWriter("info");
放在A位置程序不会得到正确结果: 文件中原有数据会全部失去,只余下新添加的seven=seven
放在B位置程序正确,请问放在A,B位置有什么区别吗?


作者: 一叶障目    时间: 2014-11-19 14:09
已解决:lol
作者: zhangyangLengen    时间: 2014-11-19 14:45
FileWriter类中构造器中的方法:FileWriter(String fileName, boolean append)
是否覆盖原有的文件的内容?

作者: 一叶障目    时间: 2014-11-19 14:59
zhangyangLengen 发表于 2014-11-19 14:45
FileWriter类中构造器中的方法:FileWriter(String fileName, boolean append)
是否覆盖原有的文件的内容 ...

加true是续写
作者: 一叶障目    时间: 2014-11-19 15:03
上楼提醒了我,问题还是没解决,毕老师的视频时说的是FileReader和FileWriter写在一块的话,第一个是一个输入流和文件相关联,第二个会新建该文件,file对象里面已经没有对象啦,如果是这样的话,加true也不应该是在原文件下续写啊
作者: kerner    时间: 2014-11-19 17:16
FileWriter类,是文件存在,则不创建,不存在才创建文件。
FileWriter(String filename) 会覆盖文件内容,并且系统文件指针移到首位。
FileWriter(String fileName, boolean append) 不会覆盖内容,系统文件指针会移到文件末尾。
作者: zhangyangLengen    时间: 2014-11-19 19:32
第二个并不会进行新建文件,其实它会自动的判断,文件是否存在,如果文件不存在,就会自动创建,如果文件存在,就不创建
作者: 一叶障目    时间: 2014-11-19 21:41
kerner 发表于 2014-11-19 17:16
FileWriter类,是文件存在,则不创建,不存在才创建文件。
FileWriter(String filename) 会覆盖文件内容, ...

恩,已经懂了,O(∩_∩)O谢谢
作者: 一叶障目    时间: 2014-11-19 21:42
zhangyangLengen 发表于 2014-11-19 14:45
FileWriter类中构造器中的方法:FileWriter(String fileName, boolean append)
是否覆盖原有的文件的内容 ...

其实是两个对象定义在一块,下面的fw定义会将文件中内容给覆盖。:lol
作者: 一叶障目    时间: 2014-11-19 21:45
zhangyangLengen 发表于 2014-11-19 19:32
第二个并不会进行新建文件,其实它会自动的判断,文件是否存在,如果文件不存在,就会自动创建,如果文件存 ...

(⊙v⊙)嗯,文件存在的话,两个定义在一块会在你加载文件进集合前就将文件覆盖,读取到的文件内容就是空的:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2