【问题标题】:Download / Extract / Overwrite .zip file with ZipArchive Class C#使用 ZipArchive 类 C# 下载/提取/覆盖 .zip 文件
【发布时间】:2013-12-28 23:49:07
【问题描述】:

我已经为我的网站开发一个应用程序已有一段时间了,终于达到了需要我下载 .zip 文件并将其解压缩到分配给变量的路径的开发部分,但我不是确定如何去做。

例如,我的程序将引用用户系统上的版本文件并读取版本,然后将检查服务器的相同版本文件(例如 www.site.com/client/version.txt)以及用户是否版本低于服务器版本,它应该从服务器下载以服务器上当前版本命名的 .zip(例如 1001.zip)并将其解压缩到变量中设置的预定义路径(称为“Arma2OAPath " 例如)并悄悄地覆盖 .zip 文件中已存在的任何文件。

除了 MSDN 之外,还有其他更好的文档或示例来说明如何执行此类操作吗?

非常感谢任何帮助/资源/示例!

我已经为此工作了一段时间,并且一直在努力寻找制作下载器/更新器的最简单方法,我相信以这种方式使用 .zip 文件将是最好的方法我的需求。

【问题讨论】:

    标签: c# zip download unzip overwrite


    【解决方案1】:

    我假设您已经知道如何下载文件,完成后您可以提取它并检查目标上是否存在相同的文件,如果存在则删除此文件并从 zip 中复制所有文件。

    以下是提取和压缩文件的代码:-

    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;
     }
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2021-03-02
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多