2013-02-20 63 views
-1

我想所有下载视频并保存在sdcard.i所有file.not arraylist不是一个单一的file.how可能它.please帮助我。如何在android中从Arraylist下载所有文件?

ArrayList<Url_Dto> list = new ArrayList<Url_Dto>(); 

在此先感谢!

什么是传递参数在DownloadFileFromURL()。我用按钮单击事件。

mainDownloadBtn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 



          //what is pass param 

       new DownloadFileFromURL().execute(); 
      } 
     }); 

可以下载下面类::

class DownloadFileFromURL extends AsyncTask<Object, String, String> { 

     int count = 0; 
     ProgressDialog dialog; 
     ProgressBar progressBar; 
     int myProgress; 

     /** 
     * Before starting background thread Show Progress Bar Dialog 
     * */ 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      ProgressBar progressBar; 

     } 

     /** 
     * Downloading file in background thread 
     * */ 
     @Override 
     protected String doInBackground(Object... params) { 
      Log.v("log_tag", "params :::; " + params); 
      int count; 
      progressBar = (ProgressBar) params[0]; 
      try { 
       // URL url = new URL(f_url[0]); 
       URL url = new URL((String) params[1]); 
       Log.v("log_tag", "name ::: " + url); 
       name = ((String) params[1]).substring(((String) params[1]) 
         .lastIndexOf("/") + 1); 
       Log.v("log_tag", "name Substring ::: " + name); 
       URLConnection conection = url.openConnection(); 
       conection.connect(); 
       // getting file length 
       int lenghtOfFile = conection.getContentLength(); 

       // input stream to read file - with 8k buffer 
       InputStream input = new BufferedInputStream(url.openStream(), 
         8192); 
       download = new File(Environment.getExternalStorageDirectory() 
         + "/download/"); 
       if (!download.exists()) { 
        download.mkdir(); 
       } 
       String strDownloaDuRL = download + "/" + name; 
       Log.v("log_tag", " down url " + strDownloaDuRL); 
       FileOutputStream output = new FileOutputStream(strDownloaDuRL); 

       byte data[] = new byte[1024]; 

       long total = 0; 

       while ((count = input.read(data)) != -1) { 
        total += count; 
        // publishing the progress.... 
        // After this onProgressUpdate will be called 
        // publishProgress("" + (int) ((total * 100)/
        // lenghtOfFile)); 

        // writing data to file 
        progressBar 
          .setProgress((int) ((total * 100)/lenghtOfFile)); 
        output.write(data, 0, count); 
       } 
       // flushing output 
       output.flush(); 

       // closing streams 
       output.close(); 
       input.close(); 

      } catch (Exception e) { 
       Log.e("Error: ", e.getMessage()); 
      } 

      return null; 
     } 

     /** 
     * Updating progress bar 
     * */ 
     protected void onProgressUpdate(String... values) { 

      super.onProgressUpdate(values); 
      Log.v("log_tag", "progress :: " + values); 
      // setting progress percentage 
      // pDialog.setProgress(Integer.parseInt(progress[0])); 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 

      Log.v("log", "login ::: 4::: " + download); 
      String videoPath = download + "/" + name; 
      String chpName = name; 
      Log.v("log_tag", "chpName ::::" + chpName + " videoPath " 
        + videoPath); 
      db.execSQL("insert into videoStatus (chapterNo,videoPath) values(\"" 
        + chpName + "\",\"" + videoPath + "\")"); 

     } 

    } 
+0

只是用于循环的arraylist大小,并把下载任务在这个for循环... – 2013-02-20 09:02:41

回答

0

This link提供HTTP文件下载的想法。有了这个想法,你可以迭代列表中的所有视频URL。

相关问题