/// <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("没有权限访问该文件");
}
}
C# 实现ZIP 压缩和解压
最新推荐文章于 2024-08-13 09:56:22 发布