当前位置: 首页 > news >正文

关于政府网站建设管理的演讲稿口碑营销案例分析

关于政府网站建设管理的演讲稿,口碑营销案例分析,一般做平面网站多少钱,如何在旅游网站上做攻略C#实现将文件、文件夹压缩为压缩包 一、C#实现将文件、文件夹压缩为压缩包核心 1、介绍 Title:“基础工具” 项目(压缩包帮助类) Description步骤描述: 1、创建 zip 存档,该文档包含指定目录的文件和子目录&#xf…

C#实现将文件、文件夹压缩为压缩包

一、C#实现将文件、文件夹压缩为压缩包核心

1、介绍

Title:“基础工具” 项目(压缩包帮助类)
Description步骤描述:
1、创建 zip 存档,该文档包含指定目录的文件和子目录(单个目录)
2、创建 zip 存档,该存档包含指定目录的文件和目录(多个目录)
3、递归删除磁盘上的指定文件夹目录及文件
4、递归获取磁盘上的指定目录下所有文件的集合,返回类型是:字典[文件名,要压缩的相对文件名]
5、解压Zip文件,并覆盖保存到指定的目标路径文件夹下
6、获取Zip压缩包中的文件列表

2、代码

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;namespace Utils.Zip
{public class ZipHelper{#region   基础参数public delegate void UnZipProgressEventHandler(object sender, UnZipProgressEventArgs e);public event UnZipProgressEventHandler unZipProgress;public delegate void CompressProgressEventHandler(object sender, CompressProgressEventArgs e);public event CompressProgressEventHandler compressProgress;#endregion#region   公有方法/// <summary>/// 创建 zip 存档,该文档包含指定目录的文件和子目录(单个目录)。/// </summary>/// <param name="sourceDirectoryName">将要压缩存档的文件目录的路径,可以为相对路径或绝对路径。 相对路径是指相对于当前工作目录的路径。</param>/// <param name="destinationArchiveFileName">将要生成的压缩包的存档路径。</param>/// <param name="compressionLevel">指示压缩操作是强调速度还是强调压缩大小的枚举值</param>/// <param name="includeBaseDirectory">压缩包中是否包含父目录</param>/// <returns>返回结果(true:表示成功)</returns>public bool CreatZip(string sourceDirectoryName, string destinationArchiveFileName, CompressionLevel compressionLevel = CompressionLevel.NoCompression, bool includeBaseDirectory = true){int i = 1;try{if (Directory.Exists(sourceDirectoryName))if (!File.Exists(destinationArchiveFileName)){ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName, compressionLevel, includeBaseDirectory);}else{var toZipFileDictionaryList = GetAllDirList(sourceDirectoryName, includeBaseDirectory);using (var archive = ZipFile.Open(destinationArchiveFileName, ZipArchiveMode.Update)){var count = toZipFileDictionaryList.Keys.Count;foreach (var toZipFileKey in toZipFileDictionaryList.Keys){if (toZipFileKey != destinationArchiveFileName){var toZipedFileName = Path.GetFileName(toZipFileKey);var toDelArchives = new List<ZipArchiveEntry>();foreach (var zipArchiveEntry in archive.Entries){if (toZipedFileName != null && (zipArchiveEntry.FullName.StartsWith(toZipedFileName) || toZipedFileName.StartsWith(zipArchiveEntry.FullName))){i++;compressProgress(this, new CompressProgressEventArgs { Size = zipArchiveEntry.Length, Count = count, Index = i, Path = zipArchiveEntry.FullName, Name = zipArchiveEntry.Name });toDelArchives.Add(zipArchiveEntry);}}foreach (var zipArchiveEntry in toDelArchives)zipArchiveEntry.Delete();archive.CreateEntryFromFile(toZipFileKey, toZipFileDictionaryList[toZipFileKey], compressionLevel);}}}}else if (File.Exists(sourceDirectoryName))if (!File.Exists(destinationArchiveFileName))ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName, compressionLevel, false);else{using (var archive = ZipFile.Open(destinationArchiveFileName, ZipArchiveMode.Update)){if (sourceDirectoryName != destinationArchiveFileName){var toZipedFileName = Path.GetFileName(sourceDirectoryName);var toDelArchives = new List<ZipArchiveEntry>();var count = archive.Entries.Count;foreach (var zipArchiveEntry in archive.Entries){if (toZipedFileName != null && (zipArchiveEntry.FullName.StartsWith(toZipedFileName) || toZipedFileName.StartsWith(zipArchiveEntry.FullName))){i++;compressProgress(this, new CompressProgressEventArgs { Size = zipArchiveEntry.Length, Count = count, Index = i, Path = zipArchiveEntry.FullName, Name = zipArchiveEntry.Name });toDelArchives.Add(zipArchiveEntry);}}foreach (var zipArchiveEntry in toDelArchives)zipArchiveEntry.Delete();archive.CreateEntryFromFile(sourceDirectoryName, toZipedFileName, compressionLevel);}}}elsereturn false;return true;}catch (Exception){return false;}}/// <summary>/// 创建 zip 存档,该存档包含指定目录的文件和目录(多个目录)/// </summary>/// <param name="sourceDirectoryName">将要压缩存档的文件目录的路径。</param>/// <param name="destinationArchiveFileName">将要生成的压缩包的存档路径。</param>/// <param name="compressionLevel">指示压缩操作是强调速度还是压缩大小的枚举值</param>/// <returns>返回结果(true:表示成功)</returns>public bool CreatZip(Dictionary<string, string> sourceDirectoryName, string destinationArchiveFileName, CompressionLevel compressionLevel = CompressionLevel.NoCompression){int i = 1;try{using (FileStream zipToOpen = new FileStream(destinationArchiveFileName, FileMode.OpenOrCreate)){using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update)){foreach (var toZipFileKey in sourceDirectoryName.Keys){if (toZipFileKey != destinationArchiveFileName){var toZipedFileName = Path.GetFileName(toZipFileKey);var toDelArchives = new List<ZipArchiveEntry>();var count = archive.Entries.Count;foreach (var zipArchiveEntry in archive.Entries){if (toZipedFileName != null && (zipArchiveEntry.FullName.StartsWith(toZipedFileName) || toZipedFileName.StartsWith(zipArchiveEntry.FullName))){i++;compressProgress(this, new CompressProgressEventArgs { Size = zipArchiveEntry.Length, Count = count, Index = i, Path = toZipedFileName });toDelArchives.Add(zipArchiveEntry);}}foreach (var zipArchiveEntry in toDelArchives)zipArchiveEntry.Delete();archive.CreateEntryFromFile(toZipFileKey, sourceDirectoryName[toZipFileKey], compressionLevel);}}}}return true;}catch (Exception ){return false;}}/// <summary>/// 递归删除磁盘上的指定文件夹目录及文件/// </summary>/// <param name="baseDirectory">需要删除的文件夹路径</param>/// <returns>返回结果(true:表示成功)</returns>public bool DeleteFolder(string baseDirectory){var successed = true;try{if (Directory.Exists(baseDirectory)) //如果存在这个文件夹删除之 {foreach (var directory in Directory.GetFileSystemEntries(baseDirectory))if (File.Exists(directory))File.Delete(directory); //直接删除其中的文件  elsesuccessed = DeleteFolder(directory); //递归删除子文件夹 Directory.Delete(baseDirectory); //删除已空文件夹     }}catch (Exception ){successed = false;}return successed;}/// <summary>/// 递归获取磁盘上的指定目录下所有文件的集合,返回类型是:字典[文件名,要压缩的相对文件名]/// </summary>/// <param name="strBaseDir">需要递归的目录路径</param>/// <param name="includeBaseDirectory">是否包含本目录(false:表示不包含)</param>/// <param name="namePrefix">目录前缀</param>/// <returns>返回当前递归目录下的所有文件集合</returns>public Dictionary<string, string> GetAllDirList(string strBaseDir, bool includeBaseDirectory = false, string namePrefix = ""){var resultDictionary = new Dictionary<string, string>();var directoryInfo = new DirectoryInfo(strBaseDir);var directories = directoryInfo.GetDirectories();var fileInfos = directoryInfo.GetFiles();if (includeBaseDirectory)namePrefix += directoryInfo.Name + "\\";foreach (var directory in directories)resultDictionary = resultDictionary.Concat(GetAllDirList(directory.FullName, true, namePrefix)).ToDictionary(k => k.Key, k => k.Value); //FullName是某个子目录的绝对地址foreach (var fileInfo in fileInfos)if (!resultDictionary.ContainsKey(fileInfo.FullName))resultDictionary.Add(fileInfo.FullName, namePrefix + fileInfo.Name);return resultDictionary;}/// <summary>/// 解压Zip文件,并覆盖保存到指定的目标路径文件夹下/// </summary>/// <param name="zipFilePath">将要解压缩的zip文件的路径</param>/// <param name="unZipDir">解压后将zip中的文件存储到磁盘的目标路径</param>/// <returns>返回结果(true:表示成功)</returns>public bool UnZip(string zipFilePath, string unZipDir){bool resualt;try{unZipDir = unZipDir.EndsWith(@"\") ? unZipDir : unZipDir + @"\";var directoryInfo = new DirectoryInfo(unZipDir);if (!directoryInfo.Exists)directoryInfo.Create();var fileInfo = new FileInfo(zipFilePath);if (!fileInfo.Exists)return false;using (var zipToOpen = new FileStream(zipFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read)){using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read)){var count = archive.Entries.Count;for (int i = 0; i < count; i++){var entries = archive.Entries[i];if (!entries.FullName.EndsWith("/")){var entryFilePath = Regex.Replace(entries.FullName.Replace("/", @"\"), @"^\\*", "");var filePath = directoryInfo + entryFilePath; //设置解压路径unZipProgress(this, new UnZipProgressEventArgs { Size = entries.Length, Count = count, Index = i + 1, Path = entries.FullName, Name = entries.Name });var content = new byte[entries.Length];entries.Open().Read(content, 0, content.Length);var greatFolder = Directory.GetParent(filePath);if (!greatFolder.Exists)greatFolder.Create();File.WriteAllBytes(filePath, content);}}}}resualt = true;}catch (Exception ){resualt = false;}return resualt;}/// <summary>/// 获取Zip压缩包中的文件列表/// </summary>/// <param name="zipFilePath">Zip压缩包文件的物理路径</param>/// <returns>返回解压缩包的文件列表</returns>public List<string> GetZipFileList(string zipFilePath){List<string> fList = new List<string>();if (!File.Exists(zipFilePath))return fList;try{using (var zipToOpen = new FileStream(zipFilePath, FileMode.Open, FileAccess.Read, FileShare.Read)){using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read)){foreach (var zipArchiveEntry in archive.Entries)if (!zipArchiveEntry.FullName.EndsWith("/"))fList.Add(Regex.Replace(zipArchiveEntry.FullName.Replace("/", @"\"), @"^\\*", ""));}}}catch (Exception ){}return fList;}#endregion#region   私有方法#endregion }//Class_endpublic class UnZipProgressEventArgs{public long Size { get; set; }public int Index { get; set; }public int Count { get; set; }public string Path { get; set; }public string Name { get; set; }}public class CompressProgressEventArgs{public long Size { get; set; }public int Index { get; set; }public int Count { get; set; }public string Path { get; set; }public string Name { get; set; }}}

二、使用方法

①引用命名空间

using Utils.Zip;

②实例化压缩帮助类,然后调用方法即可,如下所示将文件夹压缩为一个压缩包

//实例化压缩帮助类ZipHelper zipHelper = new ZipHelper();
//调用创建压缩包的方法zipHelper.CreatZip(@"C:\Software\Test", @"D:\Document\ZipPackage\updatePackage.zip");
http://www.wangmingla.cn/news/67446.html

相关文章:

  • 在网站上做宣传属于广告费用吗百度知道网页版
  • 建站新体验拉新推广一手接单平台
  • 注册购买域名后怎么做网站武汉seo排名优化公司
  • 备案查询工信部网址查询外贸seo
  • 湖南做网站公司有哪些济南网站推广
  • 做网站费用需要分摊吗seo网站关键词排名快速
  • 做网站的几个软件seo技术分享免费咨询
  • 有没有帮忙做问卷调查的网站百度销售平台怎样联系
  • 网站建设首先优化seo培训班
  • 委托 网站开发 进什么费用考研培训班集训营
  • 宁波网站设计服务收费价格百度贴吧网页版登录入口
  • 国外做任务赚钱网站百度seo2022新算法更新
  • 我国政府门户网站的建设公司建立网站的步骤
  • 彩票网站开发软件高质量关键词搜索排名
  • 做蓝牙app的网站爱网站关键词查询工具
  • 国际域名注册网站seo优化资源
  • 二手网站模板在线种子资源网
  • 全屏网站源码新闻发稿软文推广
  • 做网站定金一般多少短视频seo营销
  • 企业做网站认证有哪些好处网站推广平台有哪些
  • 盘锦网站建设价位360搜索引擎网址
  • 做公司网站,哪个程序用的多建立个人网站
  • 网站系统安全性app推广全国代理加盟
  • 郑州做网站报价站域名多少钱即时热榜
  • 常州哪里做网站网络营销品牌案例
  • 做企业网站的费用广告设计与制作需要学什么
  • 葫芦岛公司做网站网站seo优化方法
  • 南山区做网站推广软文300字范文
  • wordpress 文章分类插件广州seo技术优化网站seo
  • 简洁大气网站源码相亲网站排名前十名