您的位置:首页 > 编程语言 > C#

C# 实现ZIP 压缩和解压

2014-03-23 17:44 429 查看
/// <summary>
/// 创建ZIP压缩文件
/// </summary>
/// <param name="filePath">压缩文件的路径</param>
/// <param name="userName">用户文件名</param>
public static void CreateZipFile(string filePath,string userName)
{
if (false ==File.Exists(filePath))
return;

var zipFilePath = filePath.Replace("xml", "zip");

try
{
using (var s = new ZipOutputStream(File.Create(zipFilePath)))
{
s.SetLevel(1); // 压缩级别 0-9
s.Password = userName + Common.ZipPassWord; //Zip压缩文件密码
var buffer = new byte[Common.BufferSize]; //缓冲区大小
var entry = new ZipEntry(Path.GetFileName(filePath)) { DateTime = DateTime.Now };
s.PutNextEntry(entry);

using (var fs = File.OpenRead(filePath))
{
//double inputBytes = 0;
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
//inputBytes += sourceBytes;

//if (PrecentValueChange != null)
//    PrecentValueChange(inputBytes/fs.Length);

s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
s.Finish();
s.Close();

if (File.Exists(filePath))
File.Delete(filePath);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}

/// <summary>
/// 加压指定ZIP文件
/// </summary>
/// <param name="zipFilePath">ZIP文件的路径</param>
/// <param name="putDocuemnt">解压后文件的位置</param>
/// <param name="userName">用户文件名</param>
public static void UnZipFile(string zipFilePath,string putDocuemnt,string userName)
{
if (false == File.Exists(zipFilePath))
return;

var fastZip = new FastZip
{
Password = userName + Common.ZipPassWord,
RestoreDateTimeOnExtract = false,
RestoreAttributesOnExtract = false
};

try
{
fastZip.ExtractZip(zipFilePath, putDocuemnt, null);
}
catch (Exception ex)
{
Console.WriteLine(ex);
MessageNote.DoNote("没有权限访问该文件");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: