java中URL下载文件的问题。程序有问题,下载的mp3文件比原来的大,请问问题出在哪里?

classDownFile{publicstaticvoidmain(String[]args){URLurl=null;InputStreamis=null;FileO... class DownFile {
public static void main(String[] args){
URL url = null;
InputStream is = null;
FileOutputStream fos = null;
try{
url = new URL("http://yinyueshiting.baidu.com/data2/music/121524984/12152327672000128.mp3?xcode=6de82a6019a0fd028ddb2ac4c63c2a556f8d94595cf48717");
URLConnection urlConn = url.openConnection();
System.out.println("文件大小: "+urlConn.getContentLength());
byte[] bfr = new byte [2048];
is = urlConn.getInputStream();
fos = new FileOutputStream("e:\\abc\\平凡之路.mp3");
while ((is.read(bfr)) != -1){
fos.write(bfr);
}
fos.flush();
System.out.println("下载完毕");

}catch(Exception e){
e.printStackTrace();
}finally{
try{
if (is != null)
is.close();
if (fos != null)
fos.close();
}catch(Exception e){}
}
}
}
展开
 我来答
CloudMonarch
2014-07-18 · TA获得超过233个赞
知道答主
回答量:127
采纳率:0%
帮助的人:160万
展开全部

is.read()的返回实际从网上读取的字节数,而你是只按2KB写入,导致多写

整个while改成

int c;
while ((c=is.read(bfr))!=-1){
     fos.write(bfr,0,c);
}
btboy1978
2014-07-18 · TA获得超过2015个赞
知道大有可为答主
回答量:2950
采纳率:57%
帮助的人:985万
展开全部
int len=0;

while ((len=is.read(bfr))>0){
fos.write(bfr,0,len);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式