2014-01-11 3 views
0

Я создаю программу для загрузки файлов, но хочу только загрузить первую половину файла, и мне было интересно, есть ли способ сделать это, желательно на C#.Как разбить загрузку пополам

Это для менеджера закачек, который будет загружать только первую половину файла. Мне также нужен код, чтобы продолжить загрузку со второй половины (если возможно).

+0

А почему бы у только как загрузить 50% файла? – Jim

+0

Я создаю менеджера загрузки, просто не спрашиваю .... его трудно объяснить – user3185674

ответ

0

Вы можете использовать WebRequest и WebResponse и проверить длину с полем заголовка ContentLength

private void DownloadFile(string someUrl) 
      { 

       byte[] result; 
       byte[] buffer = new byte[4096]; 

       WebRequest wr = WebRequest.Create(someUrl); 

       using (WebResponse response = wr.GetResponse()) 
       { 
        long contentLentgth = response.ContentLength; 
        using (Stream responseStream = response.GetResponseStream()) 
        { 
         using (MemoryStream ms = new MemoryStream()) 
         { 
          int count = 0; 
          long totalBytes = 0; 
          do 
          { 
           count = responseStream.Read(buffer, 0, buffer.Length); 
           totalBytes = totalBytes + count; 
           ms.Write(buffer, 0, count); 
           using (FileStream file = new FileStream("file.bin", FileMode.Create, System.IO.FileAccess.Write)) 
           { 
            byte[] bytes = new byte[ms.Length]; 
            ms.Read(bytes, 0, (int)ms.Length); 
            file.Write(bytes, 0, bytes.Length); 
            ms.Close(); 
           } 
           if (totalBytes>contentLentgth/2) 
           { 
            break; 
           } 
          } while (count != 0); 

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