黑马程序员技术交流社区

标题: Propertise:2段代码,内容相同,顺序不同,处理结果也不同,没... [打印本页]

作者: HM朱蛟    时间: 2013-4-20 05:17
标题: Propertise:2段代码,内容相同,顺序不同,处理结果也不同,没...
本帖最后由 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
*******************************






作者: 伊廷文    时间: 2013-4-20 09:14

在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);
作者: HM朱蛟    时间: 2013-4-21 06:14
伊廷文 发表于 2013-4-20 09:14
在code_2-中的19行FileOutputStream fos = new FileOutputStream("c:\\info.txt");//只移动了该行 这段代 ...

谢谢同学




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2