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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁錦泰 黑马帝   /  2012-5-6 22:55  /  2326 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    public static void main(String[] args) throws IOException {
        test();
    }   
    private static void test() throws IOException {
        File file = new File("c:\\info.txt");
        if(file.exists()){
            file.createNewFile();
        }
        FileReader fr = new FileReader(file);
        FileWriter fw = new FileWriter(file);//为什么语句放在这里后,文件内部的内容只有"zhangsan","10",之前写入的信息全部都没有了
        Properties prop = new Properties();
        prop.load(fr);
        prop.setProperty("zhangsan", "10");
        prop.list(System.out);
        prop.store(fw, "");
        fr.close();
        fw.close();
    }
    private static void propertiesDemo_1() throws IOException {
        Properties prop = new Properties();
        prop.setProperty("zhangsan","21");
        prop.setProperty("lisi","22");
        prop.setProperty("wangwu","23");
        prop.setProperty("zhaoliu","24");
        Set<String> names = prop.stringPropertyNames();
        FileOutputStream fos = new FileOutputStream("c:\\info.txt");
        prop.store(fos, "name+age");
        fos.close();
    }

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

3 个回复

正序浏览
因为 FileReader fr = new FileReader(file)会读取已经存在的这个文件
而 FileWriter fw = new FileWriter(file)会创建一个文件,如果这个文件存在就把原来的给覆盖掉(重新的建立一个),否则建立一个新的。
而 FileWriter fw = new FileWriter(file)与FileReader fr = new FileReader(file)使用的刚好是同一个文件,
所以文件内部的内容只有"zhangsan","10",之前写入的信息全部都没有了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
文件被覆盖导致的,
FileWriter fw = new FileWriter(file,true) //多加一个参数,
“如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。”

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
前面的内容被覆盖掉了,如果要继续续写前面的内容必须在FileWriter fw = new FileWriter(file,true);

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

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