黑马程序员技术交流社区

标题: 用配置文件记录应用的使用次数 [打印本页]

作者: qq8921310    时间: 2014-11-2 22:15
标题: 用配置文件记录应用的使用次数
  1. Properties pro = new Properties();
  2.                 File file = new File("E:\\java11\\test\\info.ini");
  3.                 FileInputStream is = new FileInputStream(file);
  4.                 FileOutputStream os = new FileOutputStream(file);
  5.                 if (!file.exists())
  6.                 {
  7.                         file.createNewFile();       
  8.                         os.write("value=0".getBytes());
  9.                         os.flush();
  10.                 }
  11.                
  12.                 pro.load(is);
  13.                 int count =1;
  14.                 String value = pro.getProperty("value");

  15.                 //if(value!=null)
  16.                 //{
  17.                         count = Integer.parseInt(value);
  18.                         if ( count>3)
  19.                         {
  20.                                 System.out.println("使用次数已到,请立刻充值");
  21.                                 return ;
  22.                         }               
  23.                
  24.                 //}       
  25.                 count++;

  26.                 pro.setProperty("value",count+"");

  27.                
  28.                 pro.store(os,"haha");
  29.         }
复制代码


问题:1 //if(value!=null)的时候 会提示null。我前面已经创建了为什么还会提示空
问题:2 当添加上if(value!=null)时 编译可以成功,但是功能不能实现,哪里的逻辑出了问题。

注:这不是视频里的原代码。是自己理解写的。可能有点乱。
作者: qq8921310    时间: 2014-11-2 22:21
现在知道是第八行 有问题,但是不知道为什么会影响这么大。
作者: 李天富    时间: 2014-11-2 23:23
在新建FileOutputStream对象时会自动创建文件,也就是说file.exsits()已经为true了,所以,你的第一个if语句中的内容一定不会执行,也就是"value=0"没有被写入文件,所以下面的value是null。
作者: Kikyou2014    时间: 2014-11-3 01:42
FileOutputStream对象的创建,一定要等到数据读取到Properties对象中后,因为一旦输出流关联文件,会重写数据。这个代码就是数据在外存与内存间转移
作者: 戏言丶    时间: 2014-11-3 01:58
将os.write("value=0".getBytes());os.flush();移出括号外,new 一个FileOutputStream对象的时候会自动创建一个File文件,所以你放在括号中并不好执行,也就是没有把数据写入配置文件中,所以会出现null的现象

作者: inception    时间: 2014-11-3 02:01
本帖最后由 inception 于 2014-11-3 02:10 编辑

想错了,应该是覆盖的问题吧
作者: qq8921310    时间: 2014-11-3 21:30
李天富 发表于 2014-11-2 23:23
在新建FileOutputStream对象时会自动创建文件,也就是说file.exsits()已经为true了,所以,你的第一个if语 ...

明白了。,3Q




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