using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
using System.Text;
namespace DownloadTest
{
class Program
{
static void Main(string[] args)
{
string Source = @"D:\test";
string TartgetFile = @"D:\test.zip";
Directory.CreateDirectory(Path.GetDirectoryName(TartgetFile));
using (ZipOutputStream s = new ZipOutputStream(File.Create(TartgetFile)))
{
s.SetLevel(6);
Compress(Source, s);
s.Finish();
s.Close();
}
Console.ReadKey();
}
/// <summary>
/// 压缩
/// </summary>
/// <param name="source">源目录</param>
/// <param name="s">ZipOutputStream对象</param>
public static void Compress(string source, ZipOutputStream s)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string[] filenames = Directory.GetFileSystemEntries(source);
foreach (string file in filenames)
{
if (Directory.Exists(file))
{
Compress(file, s); //递归压缩子文件夹
}
else
{
using (FileStream fs = File.OpenRead(file))
{
byte[] buffer = new byte[4 * 1024];
ZipEntry entry = new ZipEntry(file.Replace(Path.GetPathRoot(file), "")); //此处去掉盘符,如D:\123\1.txt 去掉D:
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
}
}
}
}