using System; using System.Collections.Generic; using System.Text; using SevenZip; using System.IO; using System.Windows.Forms; namespace TestZip { internal static class Zip { public static bool Init() { string _7z32 = Application.StartupPath+ "\\7z32.dll"; string _7z64 = Application.StartupPath + "\\7z64.dll"; string _7z = _7z32; try { if (IntPtr.Size == 8) _7z = _7z64; SevenZipExtractor.SetLibraryPath(_7z); SevenZipCompressor.SetLibraryPath(_7z); return true; } catch { return false; } } /// <summary> /// 解壓 /// </summary> /// <param name="zip">解壓的zip文件</param> /// <param name="folder">解壓到某個文件夾</param> /// <returns></returns> public static bool UnZip(string zip, string folder) { try { var tmp = new SevenZipExtractor(zip); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } tmp.ExtractArchive(folder); return true; } catch(Exception ex) { return false; } } /// <summary> /// 壓縮 /// </summary> /// <param name="zip">壓縮文件新的保存路徑</param> /// <param name="fileFullNames">需要壓縮文件所在路徑(多個需要壓縮的文件)</param> /// <returns></returns> public static bool ToZip(string zip, params string[] fileFullNames) { try { var tmp = new SevenZipCompressor(); tmp.CompressFiles(zip, fileFullNames); return true; } catch { return false; } } /// <summary> /// 壓縮 /// </summary> /// <param name="folder">需要壓縮文件所在路徑</param> /// <param name="zip">壓縮文件新的保存路徑</param> /// <returns></returns> public static bool ToZip(string folder, string zip) { try { var tmp = new SevenZipCompressor(folder); tmp.CompressDirectory(folder, zip); return true; } catch(Exception ex) { return false; } } } }