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
阅读(
196 )
评论()
编辑
收藏
举报