我一直在为我的网站开发一个应用程序已经有一段时间了,并且最终达到了需要我下载并将.zip文件提取到分配给变量的路径的开发部分,但我不是确定如何做到这一点。
例如,我的程序将引用用户系统上的版本文件并读取版本,然后将检查服务器的相同版本文件(例如www.site.com/client/version.txt)以及用户是否版本低于服务器版本,应从服务器上以当前版本命名的服务器(例如1001.zip)下载.zip,并将其解压缩到变量中预定义的路径集(称为“Arma2OAPath”) “例如”并默认覆盖.zip文件中已存在的所有文件。
除了MSDN之外,是否有更好的文档或示例如何执行此类操作?
非常感谢任何帮助/资源/示例!
我一直在研究这个问题并且一直在敲打墙头找出制作下载器/更新程序的最简单方法,我相信这样使用.zip文件将是最好的方法。我的需要。
答案 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;
}