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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.io.*;
import java.util.*;
class Test
{
        public static void main(String args[])throws IOException
        {
                File file = new File("Test.txt");
                if(!file.exists())
                        file.createNewFile();
                BufferedReader br = new BufferedReader(new FileReader(file));
                Properties pro = new Properties();
                pro.load(br);
                if((pro.getProperty("time"))==null)
                        pro.setProperty("time","1");
                else if((pro.getProperty("time"))!=null)
                {
                        String s = pro.getProperty("time");
                        int count = Integer.parseInt(s);
                        if(count>=5)
                                System.out.println("请注册后继续使用,交钱!!!");
                        else
                        {
                                count++;
                                System.out.println(count);
                                pro.setProperty("time",Integer.toString(count));
                        }
                       
                }
                BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                pro.store(bw,"");
                br.close();
                bw.close();
        }

}
这样写代码没有问题,但是为什么我把输出流和输入流写在一起的时候就不符合需求了啊 ?

4 个回复

倒序浏览
当你把输出流和输入流放在一起时,当程序执行到BufferedWriter bw = new BufferedWriter(new FileWriter(file));时,这个输出流对象会从新创建一个文件把原来的 配置文件覆盖掉,所以如果写到一起,当程序第二次执行的时候 配置文件里还是没有任何信息,所以你Properties集合调用load方法的时候实际上还是在载入一个空文件,所以你配置文件里的配置信息也不会随着你程序的运行次数而改变。

输出流是不管你有没有目标文件,他都会取创建一个文件取覆盖原文件,除非你在构造参数中加上 true.

评分

参与人数 1黑马币 +3 收起 理由
sk0806 + 3

查看全部评分

回复 使用道具 举报
wf111sxwf 发表于 2014-11-23 11:36
当你把输出流和输入流放在一起时,当程序执行到BufferedWriter bw = new BufferedWriter(new FileWriter(fi ...

哦哦, 明白了, 谢谢啦,
回复 使用道具 举报
来学习的。。
回复 使用道具 举报
昨天晚上我也碰到了这个问题,整了将近两个小时,就是因为输出流在定义的时候会重新创建一个空的文件,而我们这里有输出的文件命名与原先的文件相同,所以原先存储properties的文件就被windows给覆盖掉了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马