用BufferedReader  skip方法,开多线程
而且也不必都读完再显示吧。速度应该会提高很多的。good luck

解决方案 »

  1.   

    上面说的是个办法,也可以使用nio(new I/O)包,性能提高得很大,试试!
      

  2.   

    to:bluesmile979(笑着) 
    《不必都读完再显示》你的想法我有想过。
    另外有没有提供点代码过来?
      

  3.   

    一下读出来试试
    sr.read(cs,0,sr.available());
      

  4.   

    我再补充两句,这方面大家经常用到,却很少注意,这就是在使用可变长容器(StringBuffer, ArrayList, HashMap......)时,通常大家直接使用其默认的构造函数(new StringBuffer(), new ArrayList()...), 就StringBuffer而言,默认16 char,每次append,缺多少char补多少,(这个算法着实有问题)因此
    while((code = sr.read(cs,0,BUFFER))!=-1){
      sb.append(cs,0,code); //每次循环都重新分配内存,基本上每次多1024chars
    }
    当然,这个初始值很难确定。如果是读本地文件,可以直接使用文件长度,但是网络上的io基本上得凭经验
      

  5.   

    代码就没有啦基本思路就是第一个线程负责0--1000字节  然后skip1000  第二个线程负责1001-2000个字节,类推。因该很容易写的。
    这就是在使用可变长容器(StringBuffer, ArrayList, HashMap......)时,通常大家直接使用其默认的构造函数(new StringBuffer(), new ArrayList()...), 就StringBuffer而言,默认16 char,每次append,缺多少char补多少,(这个算法着实有问题)实际的算法不是这样的,虽然默认大小会有些影响,但是影响不会太大。这种底层包各方面都有考虑的。他的处理机制还是很不错的。你可以自己去看看源代码就知道了
      

  6.   

    嗯,多线程,就跟多CPU处理一个程序同样的原理