using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
using System.Collections;


/**//// <summary>
/// Summary description for Ziper
/// </summary>
public class Ziper


{

"Zip"#region "Zip"
public static void Zip(string SourceFolder, string DestinationFile)

{
Zip(SourceFolder, DestinationFile, 1024);
}
#endregion


"Zip"#region "Zip"
public static void Zip(string SourceFolder, string DestinationFile, int BufferSize)

{
try

{
ArrayList files = GenerateFileList(SourceFolder);
if (files.Count != 0)

{
FileStream fileStreamOut = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write);
ZipOutputStream zipOutStream = new ZipOutputStream(fileStreamOut);
foreach (string filePath in files)

{
FileStream fileStreamIn = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[BufferSize];
string newPath = filePath.Substring(SourceFolder.Length + 1);
ZipEntry entry = new ZipEntry(newPath);
zipOutStream.PutNextEntry(entry);
int size;
do

{
size = fileStreamIn.Read(buffer, 0, buffer.Length);
zipOutStream.Write(buffer, 0, size);
}
while (size > 0);
fileStreamIn.Close();
}
zipOutStream.Close();
fileStreamOut.Close();
}
}
catch

{
throw new Exception("Error, please make sure that your asp.net account has the rights to read and write those files");
}
}
#endregion


"UnZip"#region "UnZip"
public static void UnZip(string SourceFile, string DestinationFolder)

{
UnZip(SourceFile, DestinationFolder, 1024);
}
#endregion


"UnZip"#region "UnZip"
public static void UnZip(string SourceFile, string DestinationFolder, int BufferSize)

{
try

{
if (!Directory.Exists(DestinationFolder))

{
Directory.CreateDirectory(DestinationFolder);
}
FileStream fileStreamIn = new FileStream(SourceFile, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
ZipEntry entry = zipInStream.GetNextEntry();
while (entry != null)

{
if (entry.IsDirectory)

{
if (!Directory.Exists(DestinationFolder + "\\" + entry.Name))

{
Directory.CreateDirectory(DestinationFolder + "\\" + entry.Name);
}
}
else

{
FileStream fileStreamOut = new FileStream(DestinationFolder + "\\" + entry.Name, FileMode.Create, FileAccess.Write);
int size;
byte[] buffer = new byte[BufferSize];
do

{
size = zipInStream.Read(buffer, 0, buffer.Length);
fileStreamOut.Write(buffer, 0, size);
}
while (size > 0);
fileStreamOut.Close();
}
entry = zipInStream.GetNextEntry();
}
zipInStream.Close();
fileStreamIn.Close();
}
catch

{
throw new Exception("Error, please make sure that your asp.net account has the rights to read and write those files");
}
}
#endregion


"GenerateFileList"#region "GenerateFileList"
private static ArrayList GenerateFileList(string Folder)

{
ArrayList files = new ArrayList();
foreach (string file in Directory.GetFiles(Folder))

{
files.Add(file);
}
foreach (string directions in Directory.GetDirectories(Folder))

{
foreach (string file in GenerateFileList(directions))

{
files.Add(file);
}
}
return files;
}
#endregion
}

posted @
2008-04-26 02:22
N/A2011
阅读(
200)
评论()
收藏
举报