读取大的网络文件总是出错!

lifan5748 2006-04-14 08:06:00
http://community.csdn.net/Expert/topic/4681/4681395.xml?temp=.5135309
上面是我以前问的问题,关于读一个大的网络文件时速度太慢,后来一位朋友告诉我:

s=s + String.valueOf(buffer);
这句有问题,效率低下。
你的s估计是String吧?
把s 改为StringBuffer,然后
把s=s + String.valueOf(buffer)改为s.append(buffer)
估计会快许多。


我就照着上面朋友说的,把s=s + String.valueOf(buffer)改为s.append(buffer)了,但是发现读取到的html代码中偶尔会包含一些乱码,数据一下变的没规则了,也就没办法分析。 用我原来的方法,虽然读取速度很慢,但是读到的文件html代码却很正确。 真不知道是什么原因了?
...全文
150 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
powerman_lyj 2006-04-16
  • 打赏
  • 举报
回复
同意上面的,在网络上操作文件是要好好考虑一下注意事项的
zouxinfox 2006-04-16
  • 打赏
  • 举报
回复
再补充两点:
1 速度慢的瓶颈主要是网络带宽,而不是程序
2 在关闭流之前要in.flush()一下
zouxinfox 2006-04-14
  • 打赏
  • 举报
回复
我刚才试了试,一切正常,没有发现你说的问题啊!
这是代码
public class Test3 {

public static void main(String[] args) {
// TODO Auto-generated method stub
URLConnection con = null;
BufferedReader in = null;
StringBuffer s = new StringBuffer();
try {
char[] buffer = new char[1024];
URL u = new URL(
"http://computing.unn.ac.uk/staff/cgpb2/web/Customers.html");
con = u.openConnection();
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
while (in.read(buffer) != -1) {
s.append(buffer);
}

in.close();
FileWriter fw = new FileWriter(new File("F://del.txt"));
fw.write(s.toString());
} catch (Exception e) {
System.out.println("页面读取失败!");
e.printStackTrace();
}

}
}
另外,对你的程序提点个人意见:
改写一下while(in.read(buffer) != -1)语句,这样效率是比较低的,应该利用int read(char[] cbuf, int off, int len) 方法进行读。
开发者开聊 2006-04-14
  • 打赏
  • 举报
回复
估计编码问题

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧