PackageFolder(sPath, ZIP_Temp, false);
public static Boolean PackageFolder(String folderName, String compressedFileName, Boolean overrideExisting)
{
if (folderName.EndsWith(@"\\"))
folderName = folderName.Remove(folderName.Length - 1);
Boolean result = false;
if (!Directory.Exists(folderName))
{
return result;
}
if (!overrideExisting && File.Exists(compressedFileName))
{
return result;
}
try
{
using (Package package = Package.Open(compressedFileName, FileMode.Create))
{
var fileList = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
foreach (String fileName in fileList)
{
//获取所有子文件的文件
String pathInPackage;
pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, String.Empty) + "/" + Path.GetFileName(fileName);
Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative));
PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", CompressionOption.Fast);
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
fileStream.CopyTo(packagePartDocument.GetStream());
}
}
}
result = true;
}
catch (Exception e)
{
throw new Exception("压缩文件夹错误: " + folderName, e);
}
return result;
}
ZipDirectory(sPath, ZIP_Temp, passwd);
public static bool ZipDirectory(string folderToZip, string zipedFile, string password)
{
bool result = false;
if (!Directory.Exists(folderToZip))
return result;
ZipOutputStream zipStream = new ZipOutputStream(File.Create(zipedFile));
zipStream.SetLevel(6);
if (!string.IsNullOrEmpty(password)) zipStream.Password = password;
result = ZipDirectory(folderToZip, zipStream, "");
zipStream.Finish();
zipStream.Close();
return result;
}
//写LOG