黑马程序员技术交流社区

标题: 为何输出流语句位置不一样,结果也是不一样呢? [打印本页]

作者: 张立江    时间: 2012-6-24 08:20
标题: 为何输出流语句位置不一样,结果也是不一样呢?
本帖最后由 小张童鞋 于 2012-6-24 15:47 编辑

import java.io.*;
import java.util.*;

class PropDemo1
{
        public static void main(String[] args) throws IOException
        {
                demo_1();
        
        }

        public static void demo_1() throws IOException
        {
                BufferedReader bufr= new BufferedReader(new FileReader("ohmygod.txt"));
                //位置1
                Properties prop = new Properties();

                prop.load(bufr);
                prop.setProperty("lisi","88");

                BufferedWriter bufw = new BufferedWriter(new FileWriter("ohmygod.txt"));//输出流语句A
                 //位置2               
                prop.store(bufw,"");
                prop.list(System.out);

                bufw.close();
                bufr.close();
        }
}

我的问题是 输出流语句A 放在位置1和放在位置2,两者用list()打印在控制台上的语句和store()方法保存在"ohmygod.txt"的是不一样的,这是为什么呀,放在位置1的时候获取文件和放在位置2的时候获取文件,内容不都是一样的么.先定义和后定义这个输出流语句应该都可以的呀。

1.png (603 Bytes, 下载次数: 24)

放在位置1的输出,在文本中也是如此

放在位置1的输出,在文本中也是如此

2.png (1021 Bytes, 下载次数: 26)

放在位置2的输出,在文本中也是如此

放在位置2的输出,在文本中也是如此

作者: 孔肖    时间: 2012-6-24 10:03
放在位置1时,当存在ohmygod.txt文件就将它覆盖,没有就创建ohmygod.txt文件,所以位置1文件被覆盖后文件内容没有内容,prop加载不到内容,里面只有后来设置的内容
位置2时,文件内容已经读取到Properties中,虽然语句A将文件覆盖,但是下面将prop内容写入到文件中,所以内容是全的
其实就是FileWriter将文件覆盖的问题
作者: 张立江    时间: 2012-6-24 15:46
孔肖 发表于 2012-6-24 10:03
放在位置1时,当存在ohmygod.txt文件就将它覆盖,没有就创建ohmygod.txt文件,所以位置1文件被覆盖后文件内 ...

确实是,放在位置1时,文本已经被重置清零了.我用了万能的sop()方法验证了,谢谢哈




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