优化一下,先把str + "\n"加入到一个StringBuffer中,最后一次性添加到textarea中
StringBuffer s = new StringBuffer();
...
if(str!=null)
{
    s.append(str);
    s.append("\n");
}
else
  break;
...
ta.append(s.toString());

解决方案 »

  1.   

    简单字符串相加本来就很慢,使用StringBuffer的append可以避免新建String对象,重新分配内存空间;再者你对一个对象(textarea)多次进行append,效率很低。
      

  2.   

    我跟踪过append,也会新建String对象的!
      

  3.   

    不至于吧?我没仔细去看过String的实现,不过据说它是用StringBuffer实现的;总之,StringBuffer确实比String高效。
      

  4.   

    StringBuffer应该只新建了一个对象,以后在append时不必与+一样要重新分配内存空间了。
      

  5.   

    除了用StringBuffer以外,你尽量用InputStream,不要用Reader,这个慢。另外,用本地byte[] 做缓冲比用Buffered.....快。
      

  6.   

    那我如果想在循环里不每次重新分配空间,用append反复建立StringBuffer的对象,那么怎么实现该对象在每次循环尾的清空呢?
      

  7.   

    你并没有重复创建StringBuffer,自始至终,只有一个StringBuffer对象
      

  8.   

    “ 我跟踪过append,也会新建String对象的!”
    我想,即便有新建,JDK也会对之进行优化的! :)