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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ヅ飞飞 于 2013-11-1 19:20 编辑

今天做Properties类练习时,遇到的流的问题代码如下:
  1. package day20;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.util.Properties;

  7. public class PropertiesDemo {
  8.         public static void main(String[] args) throws IOException {
  9.                 File file = new File(
  10.                                 "E:\\android\\workspace\\heima\\src\\day20\\info.txt");
  11.                 if (!file.exists())
  12. file.createNewFile();
  13.                 FileOutputStream out = new FileOutputStream(file);// 这句是之前做写操作时的语句。
  14.                 FileInputStream in = new FileInputStream(file);

  15.                 Properties pro = new Properties();
  16.                 pro.load(in);
  17.                 System.out.println(pro);

  18.                 // pro.setProperty("zhansan", 23 + "");
  19.                 // pro.setProperty("lisi", 24 + "");
  20.                 // pro.store(out, "");

  21.         }
  22. }
复制代码
配置文件info.txt中有配置信息,当执行次代码后配置文件信息清空(目测覆盖文件了),原因找到了就是上面注释的FileOutputSream的原因,去掉此句执行正常可以读入配置信息。但不是很理解错误的原因,是因为两个流同时关联一个文件的原因么?new一个FileOutputStream(file)时如果文件存在它是创建新文件然后覆盖么,那么new一个FileInputStream(file)是不是也覆盖?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

正序浏览
找到答案了,输出流new对象时如果不指定续写(blooen append),指定文件已存在会创建新文件覆盖原有文件。
把输出流写在prop.load(fr);前面就相当于每次load的文件都是被覆盖后的是空的文件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马