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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HeiMa-黄倲江 中级黑马   /  2012-11-4 23:06  /  2158 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 qq84995227 于 2012-11-5 01:37 编辑

public static void demo_2()throws IOException{
                //用到BufferedReader 就必须要有一个FileReader对象的文件
                BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
                String line = null;
                // 创建一个Properties
                Properties prop = new Properties();
                //如果line不等于空执行的操作
                while((line=bufr.readLine()) != null){
                        //在等号那里进行分割
                        String[] arr = line.split("=");                        //将数据保存到集合里面去
                        prop.setProperty(arr[0], arr[1]);
                }
                bufr.close();
                System.out.println(prop);
        }

infu.txt 的数据

zhangsan =10
lisi = 20
wangwu =90


会不会是数组切割的时候,出现的异常阿.  还是properties  .......

把代码改成下面那样子的时候,就没问题了.
        //创建properties
                Properties prop = new Properties();
                //创建一个流对象
                FileInputStream fis = new FileInputStream("info.txt");
                //将流中的数据加载进集合  比下面哪种更简单易懂
                //需求那我要修改info.txt里面的数据呢
                prop.load(fis);

可是老觉得上面那种方法也没问题阿..
异常显示为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at cn.max.DemoPrperties.demo_2(DemoPrperties.java:51)
        at cn.max.DemoPrperties.main(DemoPrperties.java:17)

异常说我数组有问题:
String[] arr = line.split("=");
prop.setProperty(arr[0], arr[1]);
是这里出问题吗?

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

3 个回复

倒序浏览
报的是数组越界异常,你可以Debug 一下
我猜测是你的文本数据的问题

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

回复 使用道具 举报
因为读取了一个空行(里面只有“\r\n”标记),则String[] arr = line.split("=")后arr中只有一个null元素,所以arr[1]会角标越界。

改成    if(line.length()>2)
                {
                      arr = line.split("=");         
              prop.setProperty(arr[0], arr[1]);
                }
就可以了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
葛旭东 发表于 2012-11-5 01:03
因为读取了一个空行(里面只有“\r\n”标记),则String[] arr = line.split("=")后arr中只有一个null元素 ...

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