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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾浩 中级黑马   /  2012-10-19 12:48  /  1574 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾浩 于 2012-10-19 14:03 编辑

public class PropertiesAndIoFile {

public static void main(String[] args) {

    loadInput();
  
}

public static void loadInput(){
  Properties pro = new Properties();
  FileInputStream fis =null;
  //FileOutputStream fos =null;
   try {
    fis = new FileInputStream("D:\\hell.txt");
  //fos = new FileOutputStream("D:\\hell.txt");
   
  pro.load(fis);
  System.out.println(pro);
   
  }
  catch (IOException e) {
   
   e.printStackTrace();
  }finally{
   try {
   
    //fos.close();
    fis.close();
   } catch (IOException e) {
   
    e.printStackTrace();
   }
   
  }
}


}
这个程序这样运行是ok的  但是如果加上了被注释的输出流 只要程序运行那个配置文件里面的数据就被清空了 并且输出结果也是空的 这说明在读取数据前那个配置文件就被清空了 那个输出流什么也没有做 只是创建了一个输出流对象而已为什么会出现这种情况? 很纠结啊

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
//FileOutputStream fos =null;  //fos = new FileOutputStream("D:\\hell.txt");这句话将会在D盘下新建一个hell.txt,那么原来的hell.txt将被覆盖,新的hell.txt文件中是没有内容的,因为你没有写入过内容;

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
同意楼上的说法,因为你创建一个创建一个向具有指定名称的文件中写入数据的输出文件流fos
//FileOutputStream fos =null;
//fos = new FileOutputStream("D:\\hell.txt");
这样就会覆盖掉你原来那个hell.txt文件本文件,没有指定写入数据;所以就是空白的,
如果你不想让它覆盖,可以创建具有指定name的文件中写入输出流,添加一个true参数;意思是指将字节写入文件末尾处,而是不是开头处。
如下:
fos = new FileOutputStream("D:\\hell.txt",true);
这样就不会覆盖掉你原文件里的内容。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
谢谢楼上的啊 写多了晕了 以为把两个流写在一起方便点  结果把最基本的给忽略了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马