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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 万琪 于 2013-7-3 19:04 编辑

练习:
限制程序运行次数。当运行次数到达5次时,给出,请您注册的提示。并不再让该程序执行。

public static void main(String[] args) throws IOException {
            Properties path = new Properties();

            File f = new File("D:\\count.ini" );
             if (!f.exists())// 是否存在
                  f.createNewFile();
            FileInputStream fi = new FileInputStream(f);

            //放这不行    FileOutputStream fo = new FileOutputStream(f);
            path.load(fi); // 读取
             int count = 0;
            String value = path.getProperty( "time");
             if (value != null) {
                  count = Integer. parseInt(value);
                   if (count >= 5) {
                        System. out.println("试用结束!" );
                         return;
                  }
            }
            count++;
            path.setProperty( "time", count + "" );
             //必须放到这里,放上面不行了
            FileOutputStream fo = new FileOutputStream(f);  //放这可以
            path.store(fo, "");
            fi.close();
            fo.close();

            System. out.println("剩余" + (5 - count));
      }


为啥?按理说应该是一样的。。。。
但,,放上面。。value的值=null,,,
放下吗,,就噢啦,,求解
(回答有奖哦   {:soso_e113:}


评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

4 个回复

倒序浏览
//放这不行    FileOutputStream fo = new FileOutputStream(f);

            path.load(fi); // 读取
我的理解是 这个文件后面跟的路径还没有加载到内存;
而输出流向往里写文件没有目标源 不知道理解的对不对

评分

参与人数 1黑马币 +5 收起 理由
万琪 + 5 神马都是浮云

查看全部评分

回复 使用道具 举报
///默认打开文件输出流,文件内容会被清空,可以用追加模式打开,
//即上边语句改为FileOutputStream fo = new FileOutputStream(f, true);就不用下放了

评分

参与人数 1技术分 +1 收起 理由
万琪 + 1 不错,

查看全部评分

回复 使用道具 举报
我觉的应该是一样的,没什么不一样
回复 使用道具 举报
个人理解,可能是根据语句顺序有关,首先你读文件,就把FileInputStream(文件读取管子)插在了文件上,然后进行读取、判断、修改。修改完了才能往里面存,就是才能把 FileOutputStream (文件写出管子)插在文件上,然后存储!
我也试了一下放上面,运行了几次,查看文件time次数没变化,估计就是没后把 FileOutputStream 插进文件,所以没存上!
只是个人理解!希望有所帮助!

评分

参与人数 1技术分 +1 收起 理由
万琪 + 1

查看全部评分

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