黑马程序员技术交流社区

标题: 关于Properties的问题,想了很久,希望大家帮帮忙! [打印本页]

作者: Porsche911    时间: 2014-6-4 20:13
标题: 关于Properties的问题,想了很久,希望大家帮帮忙!
本帖最后由 Porsche911 于 2014-6-5 15:27 编辑
  1. import java.io.*;
  2. import java.util.*;
  3. class  RunCount
  4. {
  5.           public static void main(String[] args) throws IOException
  6.           {
  7.                     Properties prop = new Properties();

  8.                     File file = new File("count.ini");
  9.                     if(!file.exists())
  10.                     file.createNewFile();
  11.                
  12.                     FileInputStream fis = new FileInputStream(file);

  13.                     prop.load(fis);
  14.                

  15.                     int count = 0;
  16.                     String value = prop.getProperty("time");
  17.                
  18.                     if(value!=null)
  19.                     {
  20.                               count = Integer.parseInt(value);
  21.                               if(count>=5)
  22.                               {
  23.                                         System.out.println("您好,使用次数已到,拿钱!");
  24.                                         return ;
  25.                               }

  26.                      }

  27.                     count++;

  28.                     prop.setProperty("time",count+"");

  29.                     FileOutputStream fos = new FileOutputStream(file);

  30.                     prop.store(fos,"");

  31.                     fos.close();
  32.                     fis.close();
  33.                
  34.           }
  35. }
复制代码
上面这段代码是毕老师的原码。但是,如果把FileOutputStream fos = new FileOutputStream(file);这个代码写到 FileInputStream fis = new FileInputStream(file);后面,换句话说两句话连着写的话,即使不断重复运行程序,计数器一直是1,而不会自增这是为什么啊?

作者: 返璞归真    时间: 2014-11-15 13:38
我认为是这样的,FileOutputStream fos = new FileOutputStream(file);
这个语句在执行时,如果文件“file”不存在,就会创建该文件,如果存在会覆盖原文件“file”。
所以每次由于properties文件的value值默认为0,经过加1后存储到“file”中,所以每次都是存储的1。

修正:FileOutputStream fos = new FileOutputStream(file,true);这样加到FileinputStream后就可以了,
第二个参数置为true,他就不会创建新文件,而是在原文件后继续写入。(但配置文件内容会变多)




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