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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 廖理 于 2012-5-9 21:04 编辑

在用Properties在处理获取存储在文本中的系统信息,并将修改后的信息存入文本文件,

要用到输入和输出流,为什么,输出流必须在信息修改之后后初始化,否则就会出问题,

这是为什么呢啊?是不是与同步有关啊?

2 个回复

倒序浏览
如果不是同一个文本文件的话,应该不会出问题吧。

如果是同一个文本文件,那就要考虑read和write的使用之处了,因为这都是阻塞式的方法
至于初始化,我也想不通是什么原因。
希望楼主解决疑惑以后能分享一下经验,呵
回复 使用道具 举报
除了在load()方法之后创建输出流对象
也可以在load()方法之前创建输出流,前提是文件File不能与的输入流的File是同一个文件。例:
Reader r=new FileReader("F:\\a.properties");
FileWriter fw=new FileWriter("F:\\b.properties");
p.load(r);
r.close();
还可以创建输出流时标示是向文件中追加,例:
Properties p=new Properties();
Reader r=new FileReader("F:\\a.properties");
    FileWriter fw=new FileWriter("F:\\a.properties",true);
p.load(r);
r.close();
原因可能是在load属性之前,如果构造了新的输出流,并且输出流和输入流文件同名,调用load()时,此时的输入流的指向已经不是实际的properties文件,而变成了内存中由输出流产生的空的properties,导致的结果就是此时在调用load()方法时,加载的就是一个空的properties,
如果输出流时追加的话,内存中产生了一个包含File文件信息的properties,然后输入流还是指向了内存的这个properties,不过这是就不是空的。
如果输出流和输入流指向的不是同一个文件,这时输入流不会在重新指向内存由输出流产生的properties了。

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