.Net 下利用ICSharpCode.SharpZipLib.dll实现文件、文件夹压缩、解压缩
2009-12-14 16:32
906 查看
添加引用ICSharpCode.SharpZipLib.dll
demo链接:demo资源下载
using System; using System.Collections.Generic; using System.IO; using System.Threading; using ICSharpCode.SharpZipLib.Zip; namespace Lib { /// <summary> /// 文件压缩、解压缩 /// </summary> public class FileCompression { /// <summary> /// 构造函数 /// </summary> public FileCompression() { } #region 加密、压缩文件 /// <summary> /// 压缩文件 /// </summary> /// <param name="fileNames">要打包的文件列表</param> /// <param name="GzipFileName">目标文件名</param> /// <param name="CompressionLevel">压缩品质级别(0~9)</param> /// <param name="SleepTimer">休眠时间(单位毫秒)</param> public static void Compress(List<FileInfo> fileNames, string GzipFileName, int CompressionLevel, int SleepTimer) { ZipOutputStream s = new ZipOutputStream(File.Create(GzipFileName)); try { s.SetLevel(CompressionLevel); //0 - store only to 9 - means best compression foreach (FileInfo file in fileNames) { FileStream fs = null; try { fs = file.Open(FileMode.Open, FileAccess.ReadWrite); } catch { continue; } // 方法二,将文件分批读入缓冲区 byte[] data = new byte[2048]; int size = 2048; ZipEntry entry = new ZipEntry(Path.GetFileName(file.Name)); entry.DateTime = (file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime); s.PutNextEntry(entry); while (true) { size = fs.Read(data, 0, size); if (size <= 0) break; s.Write(data, 0, size); } fs.Close(); file.Delete(); Thread.Sleep(SleepTimer); } } finally { s.Finish(); s.Close(); } } #endregion #region 解密、解压缩文件 /// <summary> /// 解压缩文件 /// </summary> /// <param name="GzipFile">压缩包文件名</param> /// <param name="targetPath">解压缩目标路径</param> public static void Decompress(string GzipFile, string targetPath) { //string directoryName = Path.GetDirectoryName(targetPath + "//") + "//"; string directoryName = targetPath; if (!Directory.Exists(directoryName)) Directory.CreateDirectory(directoryName);//生成解压目录 string CurrentDirectory = directoryName; byte[] data = new byte[2048]; int size = 2048; ZipEntry theEntry = null; using (ZipInputStream s = new ZipInputStream(File.OpenRead(GzipFile))) { while ((theEntry = s.GetNextEntry()) != null) { if (theEntry.IsDirectory) {// 该结点是目录 if (!Directory.Exists(CurrentDirectory + theEntry.Name)) Directory.CreateDirectory(CurrentDirectory + theEntry.Name); } else { if (theEntry.Name != String.Empty) { //解压文件到指定的目录 using (FileStream streamWriter = File.Create(CurrentDirectory + theEntry.Name)) { while (true) { size = s.Read(data, 0, data.Length); if (size <= 0) break; streamWriter.Write(data, 0, size); } streamWriter.Close(); } } } } s.Close(); } } #endregion } }
demo链接:demo资源下载
相关文章推荐
- .Net 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩(改进)
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩
- .Net 下利用ICSharpCode.SharpZipLib.dll实现文件压缩、解压缩
- .Net 下利用ICSharpCode.SharpZipLib.dll实现文件压缩、解压缩
- .Net 下利用ICSharpCode.SharpZipLib.dll实现文件压缩、解压缩
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩
- C# 下利用ICSharpCode.SharpZipLib.dll实现文件/目录压缩、解压缩
- C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
- C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密
- (转载)C#利用ICSharpCode.SharpZipLib.dll压缩文件和解压文件
- C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩
- (转载)C#利用ICSharpCode.SharpZipLib.dll压缩文件和解压文件
- C#/ASP.NET/WinForm 通过ICSharpCode.SharpZipLib.dll实现文件夹、文件的压缩与解压
- 使用ICSharpCode.SharpZipLib进行文件压缩,目前还没实现加密压缩/解压缩。
- C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
- 使用ICSharpCode.SharpZipLib.dll实现在线解压缩
- 使用ICSharpCode.SharpZipLib-(C#)实现解压缩文件的操作类
- windows mobile 上文件压缩与解压缩(使用ICSharpCode.SharpZipLib.Zip)
- C#使用ICSharpCode.SharpZipLib.dll压缩多个文件