黑马程序员技术交流社区

标题: 我喜欢抛根问底。 [打印本页]

作者: qmlovewhr    时间: 2013-7-15 14:42
标题: 我喜欢抛根问底。
本帖最后由 杨兴庭 于 2013-7-17 21:12 编辑

import java.io.*;
import java.util.*;
class  PropertiesDemo
{
public static void main(String[] args)throws IOException
{
  loadDemo();
}
public static void loadDemo()throws IOException
{
  Properties prop=new Properties();
  FileInputStream fis=new FileInputStream("E:\\info.txt");//定义一输入流对象
  prop.load(fis);//把输入流中内容加载到类对象中????
  prop.setProperty("wangwu","39");//调用hashtable的方法put,也就是添加,可能是覆盖后的修改??
  FileOutputStream fos=new FileOutputStream("E:\\info.txt");//定义一输出流对象
  prop.store(fos,"haha");//这一句不太明白,为什么haha成了文本中注释的部分,查了API,是说属性列表的描述??
  System.out.println(prop);//打印出prop中的内容
  prop.list(System.out);//将属性列表输出到控制台上
  fis.close();//关闭输入流
  fos.close();//关闭输出流
}
}
从整体来看,开始定义了一属性集Properties对象,一输出输入流对象,把文件内容放到输入流中,然后用Properties类对象进行加载,处理,再用一输出流返回到该文件中,最后关闭两个流对象.是这样理解的吗,有什么不合理的地方,请大家指一下,另外  prop.store(fos,"haha");也帮我分析下怎样理解怎么容易接受?

作者: 木、易m    时间: 2013-7-16 19:17
其实你的理解都是正确的,Properties.store(OutputStream out,String comments)其实这个方法就是前面接受一个输出流,然后将properties这个对象的内容以指定的格式写到输出流,因为properties对象的元素都是以键对存在的,就是都是一对一对的存在,所以写到文件的后的格式就是key=value这样的形式,然后后面的字符串其实你可以这样理解,因为大型的项目是需要很多配置文件的,而properties一般都是作为配置文件的使用,后面的字符串就是相当于对这个文件的解释,解释这个文件放的是什么内容,你也可以直接传进个空字符串,这样你在文件上就看不到了。
作者: 王靖远    时间: 2013-7-16 21:33
你就把Properties看成一个可以和IO流关联的HashTable。getProperty就是Map集合中的get方法。setProperty。就是put方法。
load方法可以关联一个读取流,将文件中的配置信息读取到集合中。store方法可以关联一个输出流,将集合中的配置信息写入到文件中。list方法就是一个封装好的打印集合列表的方法。




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