看了一本有关JAVA性能优化的书,里面不提倡用BuffredStreamReader,提倡用自己做的BYTE数组来BUFFER,其中初始化数组长度的时候,用到的是inputStream的available()方法,当时我测试的代码如下,对比BuffredStreamReader,性能确实有巨大提高,但是我发现最后读有些文档的话根本读不完全byte[] InputStreamToByte(InputStream iStrm)
{
int len = iStrm.available();
byte[] b = new byte[len];
@SuppressWarnings("unused")
int ch = iStrm.read(b);
return b;
}比如说读这个URL的源代码,跟直接用IE打开看到的源代码差了很多
http://news.yonghua.net.cn/htmldata/2005_05/2/14/article_275442_1.html
{
int len = iStrm.available();
byte[] b = new byte[len];
@SuppressWarnings("unused")
int ch = iStrm.read(b);
return b;
}比如说读这个URL的源代码,跟直接用IE打开看到的源代码差了很多
http://news.yonghua.net.cn/htmldata/2005_05/2/14/article_275442_1.html
int len = iStrm.available();这个写法是错误的!!available是表示在不阻塞的情况下,还可以读取多少个字节。而不是指这个流还有多长!对于网络流来说,这个是不确定的,所以你不能使用这个方法来判断读取数据长度