2013-01-17 40 views
0
 try{ 
     URLPath = "xxxxx"; 
     URL url = new URL(URLPath); 
     uc = (HttpURLConnection) url.openConnection(); 
     uc.setReadTimeout(30000);//timeout set 

     uc.connect();// connect 


     fos = new FileOutputStream(savePath); 
     InputStream in = uc.getInputStream(); 
     byte[] buffer = new byte[1024]; 
     int Length = 0; 
     long FinishedLenth = 0; 

     while((Length = in.read(buffer)) > 0) { 
      FinishedLenth = FinishedLenth + Length; 
      fos.write(buffer, 0, Length); 
     } 
     in.close(); 
     uc.disconnect(); 

     fos.close(); 
     } 

这是我的下载代码。
我有问题,当我下载像600MB,
小文件,并没有发生错误。
但我下载2G文件大小,并发生错误。错误:java.io.IOException:流关闭

java.io.IOException: Stream closed 
at java.io.BufferedInputStream.getBufIfOpen(Unknown Source) 
at java.io.BufferedInputStream.read(Unknown Source) 
at java.io.FilterInputStream.read(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.close(Unknown Source) 
at Download_File.downloadFile(Download_File.java:66) 
at downloadFileFunctionThread.run(downloadFileFunctionThread.java:116) 

这是错误信息,我google错误信息。
我发现一些解决方案是套接字关闭问题。
但下载大文件时发生错误。
所以我不知道如何解决这个问题。
谢谢大家。

+0

“当我下载一个像600mb这样的小文件时”是什么。你确定你输入正确吗? – Zyerah

+0

文件大小为600MB – MagicConch

回答

2

可能的问题是与

uc.setReadTimeout(30000);//timeout set 

对于较大的文件的连接可以得到已逾时,给出的值高于需要选用时间来下载文件或者不指定一个。

+0

但是我已经下载了该文件,下载的大小是正确的,并且发生了错误。 – MagicConch

+0

是的,我有相同的错误,并解决了我的问题,谢谢。 –