本帖最后由 zhangbingyuan 于 2014-4-5 14:03 编辑
首先解释prop.setProperty(arr[0],arr[1]); 由于split函数将读入的当前行分割为两个字符串,分别存储在arr[0],arr[1]中。通过setProperty将该键值对存入到prop文件中。
然后,经过验证,并不是因为键值对的增减发生的异常。当文件中存在空行的时候,会发生ArrayIndexOutOfBoundsException。因为如果文件中有空行存在的话,readLine()方法会读取到该空行,并使line接收到空串,即line="",这样将键值对存入prop文件的时候会发生异常。要避免这种情况的话可以将while循环内的代码改写为如下所示:
while((line=bufr.readLine())!=null)
{
String[] arr = line.split("=");
if(arr[0].equals("") || arr[1].equals("")) //如果读到了空行,那么得到的arr数组中肯定存储着空串
continue; //如果读到空串,就跳过此次循环,继续读入下一行即可
prop.setProperty(arr[0],arr[1]);
// System.out.println(line);
}
我已经亲自试验过了,希望能够帮到你。。 |