使用ZipArchive Class C下载/提取/覆盖.zip文件#

时间:2013-12-11 06:09:45

标签: c# zip download unzip overwrite

我一直在为我的网站开发一个应用程序已经有一段时间了,并且最终达到了需要我下载并将.zip文件提取到分配给变量的路径的开发部分,但我不是确定如何做到这一点。

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

除了MSDN之外,是否有更好的文档或示例如何执行此类操作?

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

我一直在研究这个问题并且一直在敲打墙头找出制作下载器/更新程序的最简单方法,我相信这样使用.zip文件将是最好的方法。我的需要。

1 个答案:

答案 0 :(得分:0)

我假设您已经知道如何下载文件,一旦完成,您可以提取它并检查目标上是否存在相同的文件,如果是这样,请删除此文件并从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;
 }
相关问题