黑马程序员技术交流社区
标题:
两个流同时关联一个文件会发生什么?!
[打印本页]
作者:
ヅ飞飞
时间:
2013-11-1 13:07
标题:
两个流同时关联一个文件会发生什么?!
本帖最后由 ヅ飞飞 于 2013-11-1 19:20 编辑
今天做Properties类练习时,遇到的流的问题代码如下:
package day20;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
File file = new File(
"E:\\android\\workspace\\heima\\src\\day20\\info.txt");
if (!file.exists())
file.createNewFile();
FileOutputStream out = new FileOutputStream(file);// 这句是之前做写操作时的语句。
FileInputStream in = new FileInputStream(file);
Properties pro = new Properties();
pro.load(in);
System.out.println(pro);
// pro.setProperty("zhansan", 23 + "");
// pro.setProperty("lisi", 24 + "");
// pro.store(out, "");
}
}
复制代码
配置文件info.txt中有配置信息,当执行次代码后配置文件信息清空(目测覆盖文件了),原因找到了就是上面注释的FileOutputSream的原因,去掉此句执行正常可以读入配置信息。但不是很理解错误的原因,是因为两个流同时关联一个文件的原因么?new一个FileOutputStream(file)时如果文件存在它是创建新文件然后覆盖么,那么
new一个FileInputStream(file)是不是也覆盖?
作者:
ヅ飞飞
时间:
2013-11-1 19:20
找到答案了,输出流new对象时如果不指定续写(blooen append),指定文件已存在会创建新文件覆盖原有文件。
把输出流写在prop.load(fr);前面就相当于每次load的文件都是被覆盖后的是空的文件。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2