2014-04-08 48 views
1

在我的第一個真正的android應用程序上工作,其中一部分是下載管理器。下載1MB和2MB之間的文件掛起

它必須下載應用程序用來教人們蓋爾語的視頻文件。

它可以在除3個文件以外的所有文件上正常工作,它可以下載更大的文件和更小的文件。但不會下載colours.mp4 1.86MB,平日1.53 MB或1.99 MB的所有文件,介於1MB和2MB之間。

它將停止在下載循環結束沒有錯誤幾分鐘只是看起來像它等待繼續下載然後它會給出一個錯誤「意外的流結束」 任何人都可以提出什麼問題可能是請?

我已經爲iPhone製作了相同的應用程序,該應用程序沒有得到與這些文件相同的問題。

這是從一個asynctask中調用的下載循環。

protected void download(String where, String file){ 

     try { 
     //makes output file 
     OutputStream output = new FileOutputStream(getFilesDir() 
       .getAbsolutePath() + "/vidos/" +file); 


     int count=0; 

     //gets url to download from 
     URL url = new URL(where); 

     URLConnection conection = url.openConnection(); 
     conection.connect(); 

     //gets the length of the file to work out percent downloaded 
     int lengthOfFile = conection.getContentLength(); 

     InputStream input = null; 
     Log.v("downloading", String.valueOf(showprg)); 
     input = new BufferedInputStream(url.openStream()); 
     byte data[] = new byte[lengthOfFile]; 
     long total = 0; 
     Log.v("downloading", "size: " + String.valueOf(downloading)); 
     while ((count = input.read(data)) > 0 && downloading) { 
      total += count; 
      publishProgress(String 
        .valueOf((int) ((total * 100)/lengthOfFile))); 
      output.write(data, 0, count); 

      //this is where it brakes 
     }; 
     Log.v("publishProgress", "done"); 
     output.flush(); 
     output.close(); 
     input.close(); 
     } catch (Exception e) { 
      Log.e("Error: ", e.getMessage()); 
     } 
    } 
+0

檢查您的網絡連接或文件沒有被破壞。 –

+0

感謝您的輸入。我試圖重新創建該文件,並沒有幫助。我不確定它是如何連接的,因爲它下載了保存在同一服務器上同一個文件夾中的其他視頻,沒有任何問題。 – alastair

+1

試試這個http://stackoverflow.com/questions/3028306/download-a-file-with-android-and-showing-the-progress-in-a-progressdialog。它會幫助你。 –

回答

0

我改變了我的URLConnection到HttpURLConnection類和去除的BufferedInputStream,現在它的下載沒有問題。

感謝Harshit Rathi爲他的鏈接Cristian'spost

相關問題