C# 压缩和解压文件
来源:互联网 发布:按键精灵淘宝秒杀脚本 编辑:程序博客网 时间:2024/05/20 12:24
下载dll:ICSharpCode.SharpZipLib.dll
public static class FileHelper { public static void ZipFileDirectory(string strDirectory, string zipedFile) { using (System.IO.FileStream ZipFile = System.IO.File.Create(zipedFile)) { using (ZipOutputStream s = new ZipOutputStream(ZipFile)) { try { ZipSetp(strDirectory, s, ""); } catch (Exception ex) { } } } } private static void ZipSetp(string strDirectory, ZipOutputStream s, string parentPath) { if (strDirectory[strDirectory.Length - 1] != Path.DirectorySeparatorChar) { strDirectory += Path.DirectorySeparatorChar; } Crc32 crc = new Crc32(); //string zipName = strDirectory.Split(new string[] { "\\", "/" }, StringSplitOptions.RemoveEmptyEntries).Last()+".zip"; string[] filenames = Directory.GetFileSystemEntries(strDirectory); foreach (string file in filenames)// 遍历所有的文件和目录 { if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件 { string pPath = parentPath; pPath += file.Substring(file.LastIndexOf("\\") + 1); pPath += "\\"; ZipSetp(file, s, pPath); } else // 否则直接压缩文件 { //打开压缩文件 using (FileStream fs = File.OpenRead(file)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); string fileName = parentPath + file.Substring(file.LastIndexOf("\\") + 1); ZipEntry entry = new ZipEntry(fileName); entry.DateTime = DateTime.Now; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; s.PutNextEntry(entry); s.Write(buffer, 0, buffer.Length); } } } } }
public static void UnZipFile(string zipFilePath, string targetPath) { if (!File.Exists(zipFilePath)) { Console.WriteLine("Cannot find file '{0}'", zipFilePath); return; } if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath))) { ZipEntry theEntry; while ((theEntry = s.GetNextEntry()) != null) { Console.WriteLine(theEntry.Name); string directoryName = Path.GetDirectoryName(theEntry.Name); string fileName = Path.GetFileName(theEntry.Name); // create directory if (directoryName.Length > 0) { directoryName = Path.Combine(targetPath, directoryName); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } } if (fileName != String.Empty) { using (FileStream streamWriter = new FileStream(Path.Combine(directoryName, fileName),FileMode.CreateNew,FileAccess.Write)) { int size = 2048; byte[] data = new byte[2048]; while (true) { size = s.Read(data, 0, data.Length); if (size > 0) { streamWriter.Write(data, 0, size); } else { break; } } } } } } }
0 0
- C# 压缩和解压文件
- 使用C#进行文件压缩和解压
- 使用C#进行文件压缩和解压
- c# 压缩解压文件
- C# 压缩解压文件
- c# 压缩解压文件
- C#压缩和解压
- 压缩和解压文件
- 文件压缩和解压
- 文件压缩和解压
- C#使用SharpZipLib压缩和解压文件3/3调用实现压缩和解压
- C#压缩解压zip 文件
- C#压缩解压zip 文件
- C#压缩解压zip 文件
- C#解压、压缩RAR文件
- C# 压缩&解压RAR文件
- C#解压、压缩RAR文件
- C# 文件压缩与解压
- 6. ZigZag Conversion
- android view 原理 -- measure 分析与应用
- c++实验6
- C++的一些简单示例
- C++学习笔记:转换构造函数与类型转换函数
- C# 压缩和解压文件
- 代码混淆 proguard相关配置过程记录
- 面试
- BP神经网络
- MyEclipse2015 Stable2.0 安装与破解
- https 出现host name not match 问题
- app后端架构
- 342. Power of Four [easy] (Python)
- 从浅到深了解Thrift(一)