fkjava

BlogJava 首页 新随笔 联系 聚合 管理
  49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

 

1,byte[]的长度

   

    写了一个从文件里读字符串的函数:

   

    public static String readFileString fFileName{//, String fEncoding {

   

    char[] buffer = new char[1024];

   

    StringBuilder text = new StringBuilder();

   

    InputStreamReader reader = null;

   

    try {

   

    reader = new InputStreamReadernew FileInputStreamfFileName));

   

    while reader.readbuffer, 0, 1024)!=-1{

   

    text.appendbuffer); <==有错

   

    }

   

    }

   

    catchException e{

   

    e.printStackTrace();

   

    }

   

    finally{

   

    ifreader!=null{

   

    try {

   

    reader.close();

   

    } catch IOException e {

   

    // TODO Auto-generated catch block

   

    e.printStackTrace();

   

    }

   

    }

   

    }

   

    return text.toString();

   

    }

   

    粗看这段代码没有问题。但是读出的字符总比实际要多。问题在text.appendbuffer)。 buffer是一个1024char数组。每次append固定的1024char.改成就好了。

   

    reader = new InputStreamReadernew FileInputStreamfFileName));

   

    int readed;

   

    while ((readed = reader.readbuffer, 0, 1024))!=-1{

   

    text.appendnew Stringbuffer, 0, readed));

   

    }

   

    2,优先级的错误

   

    Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation());

   

    这行代码的本意是如果locationService==null,就输出"null",避免NullPointerException.但实际上仍然发生NullPointerException.原来"+"的优先级大于"?",所以上面代码实际上是:

   

    Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation())

   

    括号里的当然不会是null.改成

   

    Log.dTAG, "location="+where+", "+locationService==null?"null":locationService.getLocation()));

   

就好了。

     您正在看的文章来自疯狂软件教育中心 www.fkjava.org

         信息咨询:Q564205990                星老师

posted on 2012-09-14 14:15 疯狂软件 阅读(255) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: