黑马程序员技术交流社区

标题: 请各位帮忙看看小问题 [打印本页]

作者: 一碗小米周    时间: 2013-11-7 11:11
标题: 请各位帮忙看看小问题
本帖最后由 一碗小米周 于 2013-11-7 19:35 编辑

我想请教各位的问题已经写在注释中了。谢谢各位。
  1. //为什么写入到的配置文件里time一直都是等于1呢?谢谢各位了。
  2.         public static void countExe() throws Exception{
  3.                 Properties pro = new Properties();
  4.                 FileInputStream fis = new FileInputStream("D:\\config.properties");
  5.                 FileOutputStream fos = new FileOutputStream("D:\\config.properties");
  6.                 pro.load(fis);
  7.                 int count=0;
  8.                 String value = pro.getProperty("time");
  9.                 if(value!=null){
  10.                         count=Integer.parseInt(value);
  11.                         if(count>=5)
  12.                                 System.out.println("付钱");
  13.                                 //return ;这里加不加return有什么区别?
  14.                 }
  15.                 count++;
  16.                 pro.setProperty("time",count+"");//这里写成pro.setProperty("time","count")为什么不行?
  17.                 pro.store(fos,"oh ");
  18.                
  19.                 fis.close();
  20.                 fos.close();
  21.         }
复制代码

作者: ヅ飞飞    时间: 2013-11-7 15:35
问题出在第5行: FileOutputStream fos = new FileOutputStream("D:\\config.properties");
建立一个输出流指定文件时,会直接创建一个文件,如果文件已经存在覆盖原文件。相当于你每次执行程序时都创建一个空白文件覆盖原文件,然后 pro.load(fis);读取配置信息,每次都是空值,count++总是1写入文件。

解决办法:
将第5行代码放到17行pro.store(fos,"oh ");代码上面。
注意:操作Properties类时,输出流的创建要和store存储放在一起写。避免出现覆盖文件的问题。
作者: 一碗小米周    时间: 2013-11-7 19:34
ヅ飞飞 发表于 2013-11-7 15:35
问题出在第5行: FileOutputStream fos = new FileOutputStream("D:\\config.properties");
建立一个输出流 ...

谢谢。。。




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