c#之从服务器下载压缩包,并解压
2015-12-04 15:44
465 查看
项目的配置文件为了和服务器保持一致,每次打包时都从网上下载配置文件,由于下载的是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); } } } } }
相关文章推荐
- C# Dictionary 简介
- c#中this的用法
- C# 变量改变事件
- 解决C#跨应用程序域对象生存期问题(remoting中断)
- c#练习题
- C#使用Graphics在窗体上绘图(加滚动条)
- C#字符串数组中含数字时的排序
- C# LeetCode 解决 ExcelConverttNumber to Column
- C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母
- C# 读取压缩文件方式及乱码处理
- C#正则表达式匹配字符串中的数字
- C#导出Excel和CSV文件
- C#图像处理
- C# 代码执行时间
- #Mac#快捷键
- 【C#】 之 构造函数
- C# 实现简单状态机(参考代码)
- C#使用ImitateLogin模拟登录百度
- C#加密方法总汇
- c# 退出