除了在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了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |