Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 16.11.2013
Сообщений: 44
1

Выполнение разархивации ПОСЛЕ скачивания файла

14.09.2014, 14:46. Показов 1429. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мужики, такая у меня проблема: я скачиваю файл, потом пытаюсь его распаковать, но распаковка происходит еще до полного скачивания файла. Если ставить скачивание и распаковку на 2 разных кнопки - все работает.
Как сделать, задержку распаковки до того момента, пока файл не скачается полностью?

Прикрепил 2 вложения с кодом и ошибкой, также сам код ниже:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void webClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
      {
          progressBar1.Value = e.ProgressPercentage;
      }
      private void button2_Click(object sender, EventArgs e)
      {
          System.Net.WebClient webClient = new System.Net.WebClient();
          Uri uri = new Uri("http://blackfire-hack.ru/sets/space/space1.zip");
          webClient.DownloadFileAsync(uri, @"space.zip");
          webClient.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
 
          using (Stream stream = File.OpenRead(@"space.zip"))
          {
              var reader = ReaderFactory.Open(stream);
              while (reader.MoveToNextEntry())
              {
                  if (!reader.Entry.IsDirectory)
                  {
                      Console.WriteLine(reader.Entry.FilePath);
                      reader.WriteEntryToDirectory(@"F:\test", ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
                  }
              }
          }
          
 
          
      }
Миниатюры
Выполнение разархивации ПОСЛЕ скачивания файла   Выполнение разархивации ПОСЛЕ скачивания файла  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2014, 14:46
Ответы с готовыми решениями:

Как запустить файл после скачивания?
А если я не знаю точный адресс, знаю только название файла и куда этот файл будет скачан(В...

Отображение прогресса скачивания файла
Как заставить прогресс бар работать. Например я скачиваю файл из интернета а он показывает сколько...

Отображение процесса скачивания файла
Всем привет) Вообщем у меня возникла проблемка, так вот, как по завершению скачивания файла...

Автоматизация скачивания файла по ftp
необходимо скачивать файл c ftp если он существует, думаю так: получать лист существующих файлов...

6
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
14.09.2014, 15:21 2
Попробуйте использовать заместо DownloadFileAsync это DownloadFile
0
6 / 4 / 0
Регистрация: 07.02.2014
Сообщений: 17
14.09.2014, 15:56 3
попробуйте так:
Добавьте к button2_Click - async,
а вместо
webClient.DownloadFileAsync добавьте
await webClient.DownloadFileTaskAsync
0
0 / 0 / 1
Регистрация: 16.11.2013
Сообщений: 44
14.09.2014, 16:00  [ТС] 4
Цитата Сообщение от elfrei Посмотреть сообщение
попробуйте так:
а можно на примере кода это? я совсем совсем новичек, все гуглил

Добавлено через 3 минуты
Цитата Сообщение от maxillion Посмотреть сообщение
Попробуйте использовать заместо DownloadFileAsync это DownloadFile
Вроде все хорошо, но тогда не работает прогресс бар показывающий процесс скачивания(
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
14.09.2014, 16:32 5
Лучший ответ Сообщение было отмечено Sibling как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void webClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
      {
          progressBar1.Value = e.ProgressPercentage;
      }
      private void button2_Click(object sender, EventArgs e)
      {
          System.Net.WebClient webClient = new System.Net.WebClient();
          Uri uri = new Uri("http://blackfire-hack.ru/sets/space/space1.zip");
          
          webClient.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(client_DownloadFileCompleted);
          webClient.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
          webClient.DownloadFileAsync(uri, @"space.zip");
 
         
          
 
          
      }
       static void client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            using (Stream stream = File.OpenRead(@"space.zip"))
          {
              var reader = ReaderFactory.Open(stream);
              while (reader.MoveToNextEntry())
              {
                  if (!reader.Entry.IsDirectory)
                  {
                      Console.WriteLine(reader.Entry.FilePath);
                      reader.WriteEntryToDirectory(@"F:\test", ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
                  }
              }
          }
        }
0
0 / 0 / 1
Регистрация: 16.11.2013
Сообщений: 44
14.09.2014, 17:07  [ТС] 6
Цитата Сообщение от maxillion Посмотреть сообщение
maxillion
- Спасибо огромное
0
0 / 0 / 0
Регистрация: 29.06.2020
Сообщений: 1
29.06.2020, 17:06 7
как мне тут прописать тогда чтобы распокавать сразу файл посе скачивания?
C#
1
2
3
4
5
6
7
8
9
        private void Button1_Click(object sender, EventArgs e)
        {
            WebClient webClient = new WebClient();
            webClient.DownloadProgressChanged += (o, args) => progressBar1.Value = args.ProgressPercentage;
            webClient.DownloadFileCompleted += (o, args) => progressBar1.Value = 100;
            webClient.DownloadFileAsync(new Uri(link), "Обновка.zip"); //куда сохранить
        }
    }
}
0
29.06.2020, 17:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2020, 17:06
Помогаю со студенческими работами здесь

WebClient признак полного скачивания файла
Цель: получить код html-страницы. Пробовал использовать WebClient.DownloadFile . не пошло, потому...

Альтернативы WebClient для скачивания файла
Всем доброго дня. Проблема при скачивании файла по ссылке:...

Начало скачивания файла после 10-секундного ожидания
Добрый день, коллеги. Есть рабочий скрипт. Действует он так: 1. По нажатию кнопки Скачать -...

После скачивания и запуска файла exe, появились проблемы
было так скачав игрушку с рунета запустил ее выключил комп при сл.вклучении на иконках появились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru