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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张邦庆 黑马帝   /  2011-10-30 20:34  /  2980 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Properties的load()方法是怎么实现的?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 提问有奖

查看全部评分

7 个回复

倒序浏览
实现原理我也说不清,就使用方法分享一段Demo吧:
  1. package javase.day18;

  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.util.Properties;

  5. public class LoadPropertiesDemo {
  6.         public static void main(String[] args){
  7.                         try {
  8.                                 FileInputStream fis=new FileInputStream("C:\\java_test\\test1.properties");
  9.                                 Properties prop=new Properties();
  10.                                 prop.load(fis);
  11.                                 String value=prop.getProperty("key1");
  12.                                 System.out.println("value:"+value);
  13.                         } catch (IOException e) {
  14.                                 e.printStackTrace();
  15.                         }
  16.         }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1 重在参与

查看全部评分

回复 使用道具 举报
InputStream is=ReflectFrame.class.getResourceAsStream("config.properties");               
Properties prp=new Properties();
prp.load(is);
is.close();

从上面的代码可以看出,Properties的加载,是通过流来完成的,
首先,java.exe调用类加载器,加载文件到内存中,或者说加载到流中,
load()方法就从流中,按键值对的形式读取数据到,完成加载

评分

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

查看全部评分

回复 使用道具 举报
咖啡 黑马帝 2011-10-30 23:21:26
板凳
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
       Properties p = new Properties();
       p.load(in);

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看在参与的份上,送1分

查看全部评分

回复 使用道具 举报
绿影 黑马帝 2011-10-31 18:31:47
报纸
load的原理:其实就是读取文件的一行数据,因为数据的规则都是以Key=value的形式存在的。所以读取一行数据后,可以通过“=”对该行数据进行split,完成后左边为key,右边为value,存储到Properties。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
为什么不用字符流加载呢
回复 使用道具 举报
郭敏 黑马帝 2011-11-2 11:12:50
7#
通过查看Properties的源码,你会发现在,其它在Properties类中,存在一个内部类LineReader,该内部类存在两个构造方法,分别对字符流,字节流进行处理,该类提供了一个readLine()方法。实现一行一行的读取,
Properties 通过 extends Hashtable 将读取的每行数据通过key value 方法存放。
回复 使用道具 举报
fso918 黑马帝 2011-11-2 12:25:19
8#
用字符流readLine(),将读到的字符串用等号分割,然后setProperties()下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马