引用dll文件下载路径 提取码:85ez
只引用SevenZipSharp就可以了,剩下两个是动态引用的。
/// <summary>
/// 压缩
/// </summary>
/// <param name="dllFileDir">引用dll路径</param>
/// <param name="dirPath">要压缩到的路径</param>
/// <param name="fileName">文件绝对路径</param>
/// <param name="password">密码,没有可输入null</param>
public static void CompressFile(string dllFileDir, string dirPath, string fileName, string password)
{
while (dirPath.Length > 0 && dirPath.Last<char>() == ' ')
{
string text = dirPath;
dirPath = text.Remove(text.Length - 1, 1);
}
string text2 = dirPath;
if (text2[text2.Length - 1] != Path.DirectorySeparatorChar)
{
dirPath += Path.DirectorySeparatorChar.ToString();
}
InitDll(dllFileDir);
SevenZipCompressor sevenZipCompressor = new SevenZipCompressor();
sevenZipCompressor.CompressionLevel = CompressionLevel.Normal;
sevenZipCompressor.ArchiveFormat = OutArchiveFormat.SevenZip;
sevenZipCompressor.DirectoryStructure = true;
sevenZipCompressor.IncludeEmptyDirectories = true;
sevenZipCompressor.PreserveDirectoryRoot = false;
sevenZipCompressor.ZipEncryptionMethod = ZipEncryptionMethod.ZipCrypto;
sevenZipCompressor.FastCompression = false;
if (string.IsNullOrEmpty(password))
{
sevenZipCompressor.CompressDirectory(dirPath, fileName);
}
else
{
sevenZipCompressor.CompressDirectory(dirPath, fileName, password);
}
}
/// <summary>
/// 解压
/// </summary>
/// <param name="dllFileDir">引用dll路径</param>
/// <param name="fileName">文件绝对路径</param>
/// <param name="dirPath">要解压到的路径</param>
/// <param name="password">密码,没有可输入null</param>
/// <returns></returns>
public static bool DecompressFile(string dllFileDir, string fileName, string dirPath, string password)
{
InitDll(dllFileDir);
SevenZipExtractor sze = null;
try
{
if (string.IsNullOrEmpty(password))
sze = new SevenZipExtractor(fileName);
else
sze = new SevenZipExtractor(fileName, password);
sze.ExtractArchive(dirPath);
}
catch (Exception ex)
{
return false;
}
finally
{
if (sze != null)
sze.Dispose();
}
return true;
}
/// <summary>
/// 根据操作系统动态引用dll
/// </summary>
/// <param name="dllFileDir"></param>
private static void InitDll(string dllFileDir)
{
try
{
string str = string.Empty;
if (Environment.Is64BitProcess)
{
str = "7z64.dll";
}
else
{
str = "7z.dll";
}
SevenZipBase.SetLibraryPath(Path.Combine(dllFileDir, str));
}
catch (Exception) { }
}