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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一碗小米周 中级黑马   /  2013-11-7 11:11  /  1250 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一碗小米周 于 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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

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

解决办法:
将第5行代码放到17行pro.store(fos,"oh ");代码上面。
注意:操作Properties类时,输出流的创建要和store存储放在一起写。避免出现覆盖文件的问题。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
ヅ飞飞 发表于 2013-11-7 15:35
问题出在第5行: FileOutputStream fos = new FileOutputStream("D:\\config.properties");
建立一个输出流 ...

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