黑马程序员技术交流社区

标题: ---------FileOutputStream 放置位置的影响-------- [打印本页]

作者: 万琪    时间: 2013-7-3 18:33
标题: ---------FileOutputStream 放置位置的影响--------
本帖最后由 万琪 于 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:}



作者: j816326    时间: 2013-7-3 18:52
//放这不行    FileOutputStream fo = new FileOutputStream(f);

            path.load(fi); // 读取
我的理解是 这个文件后面跟的路径还没有加载到内存;
而输出流向往里写文件没有目标源 不知道理解的对不对
作者: 王洪波    时间: 2013-7-3 19:01
///默认打开文件输出流,文件内容会被清空,可以用追加模式打开,
//即上边语句改为FileOutputStream fo = new FileOutputStream(f, true);就不用下放了
作者: lanbuohan    时间: 2013-7-3 19:05
我觉的应该是一样的,没什么不一样
作者: tpsu88    时间: 2013-7-3 19:16
个人理解,可能是根据语句顺序有关,首先你读文件,就把FileInputStream(文件读取管子)插在了文件上,然后进行读取、判断、修改。修改完了才能往里面存,就是才能把 FileOutputStream (文件写出管子)插在文件上,然后存储!
我也试了一下放上面,运行了几次,查看文件time次数没变化,估计就是没后把 FileOutputStream 插进文件,所以没存上!
只是个人理解!希望有所帮助!





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