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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ㄗ灬Night|K 中级黑马   /  2013-10-18 13:18  /  1051 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ㄗ灬Night|K 于 2013-10-18 17:51 编辑

为什么将36行的代码放在24行,运行的结果会不一样呢?
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.util.Properties;
  5. /*
  6. 用于记录应用程序运行次数。
  7. 如果使用次数已到,那么给出注册提示。
  8. */

  9. public class PropertiesTest2 {

  10.         public static void main(String[] args)throws Exception {        

  11.                 Properties prop = new Properties();
  12.                 File file = new File("d:\\time.ini");
  13.                 if(!file.exists())
  14.                         file.createNewFile();
  15.                
  16.                
  17.                 FileInputStream fis = new FileInputStream(file);
  18.                 prop.load(fis);
  19.                
  20.                
  21.                 //FileOutputStream fos = new FileOutputStream(file);
  22.                 int count=0;
  23.                 String value = prop.getProperty("time");
  24.                 if(value!=null){
  25.                         count=Integer.parseInt(value);
  26.                         if(count>=3){
  27.                                 System.out.println("使用次数已到");
  28.                                 return;
  29.                         }
  30.                         }
  31.                         count++;
  32.                         prop.setProperty("time", count+"");
  33.                         FileOutputStream fos = new FileOutputStream(file);
  34.                         prop.store(fos, null);
  35.                
  36.                
  37.                 fis.close();
  38.                 fos.close();
  39.                
  40.                
  41.         }

  42. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 斗胆潇洒 于 2013-10-18 14:10 编辑

FileOutputStream fos = new FileOutputStream(file);
执行这句话时,若文件存在,会将文件清空,

放在24行,当3次执行程序后,再次执行,先执行24行的该语句,文件清空,
进入判断,大于3次,遇ruturn返回,没有执行后面的
prop.setProperty("time", count+"");
prop.store(fos, null);
语句,即文件没有写入东西,所以执行第4次时文件内容为空。

放在36行,第4次执行时,在执行
FileOutputStream fos = new FileOutputStream(file);
之前,就遇return返回了,未进行文件的清空操作,所以文件内容依旧还在,即time=3

回复 使用道具 举报 1 0
斗胆潇洒 发表于 2013-10-18 14:07
FileOutputStream fos = new FileOutputStream(file);
执行这句话时,若文件存在,会将文件清空,

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