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;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//// <summary>
/// Summary description for Ziper
/// </summary>
public class Ziper
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
"Zip"#region "Zip"
public static void Zip(string SourceFolder, string DestinationFile)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Zip(SourceFolder, DestinationFile, 1024);
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
"Zip"#region "Zip"
public static void Zip(string SourceFolder, string DestinationFile, int BufferSize)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ArrayList files = GenerateFileList(SourceFolder);
if (files.Count != 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileStream fileStreamOut = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write);
ZipOutputStream zipOutStream = new ZipOutputStream(fileStreamOut);
foreach (string filePath in files)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
size = fileStreamIn.Read(buffer, 0, buffer.Length);
zipOutStream.Write(buffer, 0, size);
}
while (size > 0);
fileStreamIn.Close();
}
zipOutStream.Close();
fileStreamOut.Close();
}
}
catch
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
throw new Exception("Error, please make sure that your asp.net account has the rights to read and write those files");
}
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
"UnZip"#region "UnZip"
public static void UnZip(string SourceFile, string DestinationFolder)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
UnZip(SourceFile, DestinationFolder, 1024);
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
"UnZip"#region "UnZip"
public static void UnZip(string SourceFile, string DestinationFolder, int BufferSize)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (!Directory.Exists(DestinationFolder))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Directory.CreateDirectory(DestinationFolder);
}
FileStream fileStreamIn = new FileStream(SourceFile, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
ZipEntry entry = zipInStream.GetNextEntry();
while (entry != null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (entry.IsDirectory)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (!Directory.Exists(DestinationFolder + "\\" + entry.Name))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Directory.CreateDirectory(DestinationFolder + "\\" + entry.Name);
}
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
FileStream fileStreamOut = new FileStream(DestinationFolder + "\\" + entry.Name, FileMode.Create, FileAccess.Write);
int size;
byte[] buffer = new byte[BufferSize];
do
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
throw new Exception("Error, please make sure that your asp.net account has the rights to read and write those files");
}
}
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
"GenerateFileList"#region "GenerateFileList"
private static ArrayList GenerateFileList(string Folder)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ArrayList files = new ArrayList();
foreach (string file in Directory.GetFiles(Folder))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
files.Add(file);
}
foreach (string directions in Directory.GetDirectories(Folder))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
foreach (string file in GenerateFileList(directions))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
files.Add(file);
}
}
return files;
}
#endregion
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
posted @
2008-04-26 02:22
N/A2011
阅读(
196)
评论()
编辑
收藏
举报