• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c#之从服务器下载压缩包,并解压

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

项目的配置文件为了和服务器保持一致,每次打包时都从网上下载配置文件,由于下载的是zip压缩包,还需要解压,代码如下:

using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
using System.Net;

public class CsvFilesDownloader
{
    const string RootUrl = "http://xxx-";       // csv 文件下载地址
    const string CSVDirAssetPath = "Assets/CSVConvertScripts/CSVFiles";                         // csv 文件保存目录

    #region Version

    public enum Version
    {
        Trunk, CBT3, CBT2, CBT1, TT, Daye, M4, M3, M2,
    }

    #endregion

    public static void Start(Version version)
    {
        string url = RootUrl + version;
        var request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = WebRequestMethods.Http.Post;

        var response = request.GetResponse();
        var stream = response.GetResponseStream();
        string saveDirPath = AssetBundleItem.GetFullPath(CSVDirAssetPath);

        Decompress(stream, saveDirPath);
    }

    // 需使用开源类库:ICSharpCode.SharpZipLib,可以网上下载
    static void Decompress(Stream src, string targetDirPath)
    {
        if (src == null)
            throw new ArgumentNullException("src");
        if (string.IsNullOrEmpty(targetDirPath))
            throw new ArgumentException("targetDirPath");

        if (!Directory.Exists(targetDirPath))
            Directory.CreateDirectory(targetDirPath);

        using (ZipInputStream decompressor = new ZipInputStream(src))
        {
            ZipEntry entry;

            while ((entry = decompressor.GetNextEntry()) != null)
            {
                if (entry.IsDirectory)
                    continue;

                if (Path.GetExtension(entry.Name).ToLower() != ".csv")
                    continue;

                string fileName = Path.GetFileName(entry.Name);
                string path = Path.Combine(targetDirPath, fileName);
                byte[] data = new byte[2048];

                using (FileStream streamWriter = File.Create(path))
                {
                    int bytesRead;
                    while ((bytesRead = decompressor.Read(data, 0, data.Length)) > 0)
                        streamWriter.Write(data, 0, bytesRead);
                }
            }
        }
    }


}

  

转载请注明出处:http://www.cnblogs.com/jietian331/p/5019492.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中Newtonsoft.Json的安装和使用发布时间:2022-07-14
下一篇:
c#_表单处理方式发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap