使用ZipArchive类C#下载/提取/覆盖.zip文件
本文关键字:提取 覆盖 zip 文件 下载 ZipArchive 使用 | 更新日期: 2024-09-08 11:14:24
我为我的网站开发应用程序已经有一段时间了,终于完成了需要下载.zip文件并将其提取到分配给变量的路径的开发部分,但我不知道如何进行。
例如,我的程序将引用用户系统上的版本文件并读取该版本,然后将检查服务器的同一版本文件(例如www.site.com/client/version.txt),如果用户版本低于服务器版本,则应从以服务器上当前版本命名的服务器(例如1001.zip)下载.zip,并将其提取到变量中设置的预定义路径(例如称为"Arma2OAPath")中,然后静默地覆盖任何文件zip文件中已经存在的。
除了MSDN,还有什么更好的文档或例子可以说明如何做类似的事情吗?
非常感谢任何帮助/资源/示例!
我已经为此工作了一段时间,一直在努力找出制作下载程序/更新程序的最简单方法,我相信以这种方式使用.zip文件将是满足我需求的最佳方法。
我假设您已经知道如何下载一个文件,一旦您完成了它,您就可以提取它并检查目标上是否存在相同的文件,如果是这样,请删除该文件并从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;
}