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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HelloWorld! 中级黑马   /  2014-12-5 01:04  /  852 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题:如注释中所示,流对象放在上面的位置,不管运行几次,配置文件中的time对应的值一直是1。why?
/*
* 编写一个程序,运行5次后就需要注册
*/
public class PropertiesDemo {

        public static void main(String[] args) throws IOException {
               
                Properties pro = new Properties();
                File f = new File("e:\\count.ini");
                if(!f.exists())
                        f.createNewFile();
                FileInputStream fis = new FileInputStream(f);
//                FileOutputStream fos = new FileOutputStream(f);    //放到这为啥不行?
                pro.load(fis);
                int count = 0;
                String value = pro.getProperty("time");
                if(value!=null){
                        count = Integer.parseInt(value);
                        if(count >=5)
                                System.out.println("请注册!");
                }
                count++;
                pro.setProperty("time", count+"");
                FileOutputStream fos = new FileOutputStream(f);       //放在这里却可以
                pro.store(fos,"");
                fis.close();
                fos.close();
               
        }

}


2 个回复

正序浏览
kerner 发表于 2014-12-5 21:33
FileInputStream fis = new FileInputStream(f);
//             FileOutputStream fos = ...

明白了,非常感谢
回复 使用道具 举报

                FileInputStream fis = new FileInputStream(f);
//             FileOutputStream fos = new FileOutputStream(f);    //这条语句擦出了文件内容,导致getProperty()读取不到东西。 所以value为Null.
//     FileOutStream(String file) 如果有文件存在,则不创建新文件,但是会擦出文件内容。

                pro.load(fis);
                int count = 0;
                String value = pro.getProperty("time");
                if(value!=null){
                        count = Integer.parseInt(value);
                        if(count >=5)
                                System.out.println("请注册!");
                }
                count++;
                pro.setProperty("time", count+"");
                FileOutputStream fos = new FileOutputStream(f);       //放在这里却可以
                pro.store(fos,"");
                fis.close();
                fos.close();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马