2013-12-11 2 views
0

Я уже некоторое время работаю над приложением для своего веб-сайта и, наконец, достиг той части разработки, которая требует от меня загрузки и распаковки .zip-файлов на путь, назначенный переменной, однако я не уверен, как это сделать.Загрузить/Извлечь/Перезаписать .zip-файл с ZipArchive Class C#

Например, моя программа будет ссылаться на файл версии в системе пользователей и читать версию, затем будет проверять тот же файл версии сервера (например, www.site.com/client/version.txt), и если версия для пользователей ниже, чем версия сервера, она должна загружать .zip с сервера, который назван в честь текущей версии на сервере (например, 1001.zip) и извлечь его в заранее определенный путь, заданный в переменной (называемой " Arma2OAPath ") и silettly перезаписывать любые файлы, которые уже существуют из .zip-файла.

Есть ли лучшая документация или примеры того, как делать что-то вроде этого, кроме MSDN?

Любая помощь/ресурсы/примеры очень ценятся!

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

ответ

0

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

Ниже приведен код для извлечения и файлы почтового индекса: -

private static byte[] Compress(byte[] contentToCompress) 
{ 
      byte[] compressedBytes; 
      using (MemoryStream ms = new MemoryStream()) 
      { 
       using (GZipStream gs = new GZipStream(ms, CompressionMode.Compress)) 
       { 
        gs.Write(contentToCompress, 0, contentToCompress.Length); 
       } 

       compressedBytes = ms.ToArray(); 
      } 
      return compressedBytes; 
} 

private static byte[] Decompress(byte[] compressedBytes) 
{ 
      MemoryStream outputStream = new MemoryStream(); 
      using (MemoryStream ms2 = new MemoryStream(compressedBytes)) 
      { 
       using (GZipStream gs2 = new GZipStream(ms2, CompressionMode.Decompress)) 
       { 
        byte[] bufffer = new byte[0x400]; 
        int count = gs2.Read(bufffer, 0, bufffer.Length); 
        while (count != 0) 
        { 
         outputStream.Write(bufffer, 0, count); 
         count = gs2.Read(bufffer, 0, bufffer.Length); 
        } 
        return outputStream.ToArray(); 
       } 
      } 
      return null; 
} 
Смежные вопросы