2016-05-11 2 views
0

Можно ли разделить файл перед загрузкой в ​​Android, как мы можем сделать в Linux через команду cURL?Можем ли мы разбить файл перед загрузкой в ​​Android?

curl --range 200000000-399999999 -o ubuntu-iso.part2 http://mirror.pnl.gov/releases/15.04/ubuntu-15.04-desktop-amd64.iso 
curl --range 400000000-599999999 -o ubuntu-iso.part3 http://mirror.pnl.gov/releases/15.04/ubuntu-15.04-desktop-amd64.iso 
curl --range 600000000-799999999 -o ubuntu-iso.part4 http://mirror.pnl.gov/releases/15.04/ubuntu-15.04-desktop-amd64.iso 
+1

Я думаю, что вы можете FILD соответствующий ответ здесь: http://stackoverflow.com/questions/4004675/reading-the-first-part-of-a- file-using-http - но я не думаю, что вам это действительно нужно. – Jehy

+0

@Jehy все, что мне нужно, это скачать файл по частям, и я последую за деталями позже. –

+1

. Еще один хороший образец здесь: http://stackoverflow.com/questions/16788437/how-to-download-a-part-of-a -file-from-url-in-android – Jehy

ответ

0

После того, как у вас есть размер файла, разделите его на куски одинакового размера и найдите поток для каждого куска. Как только все будет сделано, напишите фрагменты файла в правильном порядке. больше

HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){ 
      File file=new File(DESTINATION_PATH); 
      if(file.exists()){ 
       downloaded = (int) file.length(); 
       connection.setRequestProperty("Range", "bytes="+(file.length())+"-"); 
      } 
     }else{ 
      connection.setRequestProperty("Range", "bytes=" + downloaded + "-"); 
     } 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     progressBar.setMax(connection.getContentLength()); 
     in = new BufferedInputStream(connection.getInputStream()); 
     fos=(downloaded==0)? new FileOutputStream(DESTINATION_PATH): new FileOutputStream(DESTINATION_PATH,true); 
     bout = new BufferedOutputStream(fos, 1024); 
     byte[] data = new byte[1024]; 
     int x = 0; 
     while ((x = in.read(data, 0, 1024)) >= 0) { 
      bout.write(data, 0, x); 
      downloaded += x; 
      progressBar.setProgress(downloaded); 
     } 

anwers: https://stackoverflow.com/a/6323043/4014891

+1

Не могли бы вы рассказать, какая строка if (ISSUE_DOWNLOAD_STATUS.intValue() == ECMConstant.ECM_DOWNLOADING) означает, и откуда значения bothe берутся из @ Zilvins7 –

Смежные вопросы