ICSharpCode.SharpZipLib.Zip 壓縮文件


public class ZipFileHelper
{
List<string> urls = new List<string>();
void Director(string dir)
{
DirectoryInfo d = new DirectoryInfo(dir);
FileSystemInfo[] fsinfos = d.GetFileSystemInfos();
foreach (FileSystemInfo fsinfo in fsinfos)
{
if (fsinfo is DirectoryInfo) //判斷是否為文件夾
{
Director(fsinfo.FullName);//遞歸調用
}
else
{
// Console.WriteLine(fsinfo.FullName);//輸出文件的全部路徑
urls.Add(fsinfo.FullName);
}

}
}
///<summary>
/// 創建ZIP文件
///</summary>
public void CreateZipFile(string dir, string sTempFile, string sPassWord)
{
try
{
Director(dir);
var files = urls.ToArray();
using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
{
s.SetLevel(9); // 壓縮級別 0-9
if (sPassWord != "")
{
s.Password = sPassWord; //Zip壓縮文件密碼
}

byte[] buffer = new byte[4096]; //緩沖區大小

foreach (string file in files)
{
if (!string.IsNullOrEmpty(file))
{
if (File.Exists(file))
{
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);

using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
else
{
//logger.Error("文件:" + file + "不存在。");
}
}
}

s.Finish();
s.Close();
}
}
catch (Exception ex)
{
//logger.Error("壓縮文件時異常!");
//logger.Error("異常描述:\t" + ex.Message);
//logger.Error("異常方法:\t" + ex.TargetSite);
//logger.Error("異常堆棧:\t" + ex.StackTrace);
}
}

/// <summary>
/// 
/// </summary>
/// <param name="files">放入ZIP的文件路勁(含文件名)</param>
/// <param name="sTempFile">創建的ZIP文件路勁(含文件名)</param>
/// <param name="sPassWord">ZIP文件密碼</param>
/// <param name="folderNames">存放到ZIP中的文件夾名,空代表放在頂級目錄</param>
public void CreateZipFileMutilFolder(string[] files, string sTempFile, string sPassWord, string[] folderNames)
{
try
{
using (ZipOutputStream s = new ZipOutputStream(File.Create(sTempFile)))
{
s.SetLevel(9); // 壓縮級別 0-9
if (sPassWord != "")
{
s.Password = sPassWord; //Zip壓縮文件密碼
}

byte[] buffer = new byte[4096]; //緩沖區大小

int i = 0;
foreach (string file in files)
{
if (!string.IsNullOrEmpty(file))
{
if (File.Exists(file))
{
ZipEntry entry = new ZipEntry((string.IsNullOrEmpty(folderNames[i]) ? "" : (folderNames[i] + "\\")) + Path.GetFileName(file));
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);

using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
else
{
//logger.Error("文件:" + file + "不存在。");
}
}

i++;
}

s.Finish();
s.Close();
}
}
catch (Exception ex)
{
//logger.Error("壓縮文件時異常!");
//logger.Error("異常描述:\t" + ex.Message);
//logger.Error("異常方法:\t" + ex.TargetSite);
//logger.Error("異常堆棧:\t" + ex.StackTrace);
}
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM