=========关于JAVA输入输出流,BufferedReader.readLine()方法效率的问题=========
感觉readLine()是不是效率有点低?
当我读入数据的时候,如果这个数据中间没有换行,
那不就等于整个文件就只有1行?
我测试了下,读入一个网页的源代码,结果发现
读入这个网页的时候,耗费3秒多,
而把这些数据读出来的时候,用了40多S。
慢的厉害。
有没有替代的方法?只能这样一行一行的读入?
示例:
BufferedReader in = new BufferedReader(new InputStreamReader(u.openStream()));
StringBuffer cb = new StringBuffer();
String tempCode = " ";
long t2 = System.currentTimeMillis();
System.out.println( "读取网页内容耗时: "+String.valueOf(t2-t1));
// 把buffer内的值读取出来,保存到code中
while ((tempCode = in.readLine()) != null) {
cb.append(tempCode + '\n ');
System.out.println(a);
}
in.close();
long t3 = System.currentTimeMillis();
System.out.println( "保存代码用时: "+String.valueOf(t3-t2));
------解决方案--------------------System.out.println( "读取网页内容耗时: "+String.valueOf(t2-t1));
你的理解是有错的,这里u.openStream()只是打开链接,并非已经读出网页内容
------解决方案--------------------原理:不用bufferreader,自己写读入的代码,但是这样可能会消耗更多的memery
InputStream in = new InputStreamReader(u.openStream());
StringBuffer cb = new StringBuffer();
byte[] bs = new byte[1024 * 16];//如果内存不是问题,可以根据文件大小,继续增加这个buffer的大小
long t2 = System.currentTimeMillis();
while(true) {
int count = in.read(bs);
if(count == -1) {
break;
} else {
cb.append(new String(bs, 0, count));
}
}
in.close();
long t3 = System.currentTimeMillis();
System.out.println( "保存代码用时: "+String.valueOf(t3-t2));