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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 HM朱蛟 于 2013-4-21 06:14 编辑

视频上的实验,20天的13集里的那个实验,关于load和store的实验。2段代码,内容相同,就只是将一条语句的顺序弄来不同,处理结果也不同,没弄明白为什么。
夜深了,脑子不好使,求解答。先谢各位。{:soso_e100:}

code1和code2的区别就只是一条语句的位置摆放不同,code1是摆在的25行,code2是摆在的19行。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
c:\\info.txt<---C盘下创建了一个文本
内容是:
**********************
zhangsan=3
lisi=4
wangwu=5
**********************

--------------------------------------------code_1-----↓-----------------------------
  1. import java.io.*;
  2. import java.util.*;

  3. class Run
  4. {
  5. public static void main(String[] args) throws IOException
  6. {
  7. //setAndGet();
  8. //method();
  9. loadDemo();

  10. }


  11. public static void loadDemo()throws IOException//设置和获取元素
  12. {
  13. FileInputStream fis = new FileInputStream("c:\\info.txt");//关联读入流

  14. Properties p = new Properties();

  15. p.load(fis);//将指定文件加载到集合中

  16. p.setProperty("wangwu",39+""); //修改

  17. <FONT color=red>FileOutputStream fos = new FileOutputStream("c:\\info.txt");//关联输出流</FONT>

  18. p.store(fos,"haha");//将fos(写入流)执行。

  19. //将集合中元素存储到指定文件中,

  20. p.list(System.out);

  21. fis.close();
  22. fos.close();

  23. sop(p);
  24. }

  25. public static void sop(Object obj)
  26. {
  27. System.out.println(obj);
  28. }
  29. }
复制代码
处理结果:
info的内容变为:
**********************
#haha
#Sat Apr 20 05:09:02 CST 2013
zhangsan=3
lisi=4
wangwu=39
**********************

--------------------------------------------code_2-----↓-----------------------------
  1. import java.io.*;
  2. import java.util.*;

  3. class Run
  4. {
  5. public static void main(String[] args) throws IOException
  6. {
  7. //setAndGet();
  8. //method();
  9. loadDemo();

  10. }


  11. public static void loadDemo()throws IOException//设置和获取元素
  12. {
  13. FileInputStream fis = new FileInputStream("c:\\info.txt");//关联读入流

  14. <FONT color=red>FileOutputStream fos = new FileOutputStream("c:\\info.txt");//只移动了该行</FONT>

  15. Properties p = new Properties();

  16. p.load(fis);//将指定文件加载到集合中

  17. p.setProperty("wangwu",39+""); //修改



  18. p.store(fos,"haha");//将fos(写入流)执行。

  19. //将集合中元素存储到指定文件中,

  20. p.list(System.out);

  21. fis.close();
  22. fos.close();

  23. sop(p);
  24. }

  25. public static void sop(Object obj)
  26. {
  27. System.out.println(obj);
  28. }
  29. }
复制代码
处理结果:
info的内容变为:
*******************************
#haha
#Sat Apr 20 05:10:50 CST 2013
wangwu=39
*******************************





评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

正序浏览
伊廷文 发表于 2013-4-20 09:14
在code_2-中的19行FileOutputStream fos = new FileOutputStream("c:\\info.txt");//只移动了该行 这段代 ...

谢谢同学
回复 使用道具 举报

在code_2-中的19行<FONT color=red>FileOutputStream fos = new FileOutputStream("c:\\info.txt");//只移动了该行</FONT> 这段代码以被执行就覆盖了原先的c:\\info.txt"文件,所以原先的数据就没有了,只有现在输入的wangwu这一个数据了,code_1再被覆盖之前已经通过p.load(fis);这一句把数据加载到了内存中所以即使原先的数据被覆盖了内存中的数据也不会丢失,如果想改变他达到code_1的效果,就要把这句代码修改为<FONT color=red>FileOutputStream fos = new FileOutputStream("c:\\info.txt",true);

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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