这里多个文件可以在不同的文件夹中,通过先创建一个空的压缩包,再把文件添加到压缩包的形式。
//压缩文件
/// <summary>///
/// </summary>
/// <param name="FilePath"> 需要压缩的文件地址数组</param>
/// <param name="BakPath"> 压缩包放置地址</param>
/// <returns></returns>
public void MyZip(string[] FilePath, string BakPath)
{
ZipOutputStream ZipStream = new ZipOutputStream(File.Create(BakPath));
ZipStream = AddZip(new List<string>(FilePath), ZipStream);
ZipStream.Finish();
ZipStream.Close();
//return ZipStream;
}
/// <summary>
/// 向压缩包添加文件
/// </summary>
/// <param name="allFiles"> 文件路径集合(绝对路径)</param>
/// <param name="ZipStream"> 压缩包文件流</param>
/// <returns></returns>
public ZipOutputStream AddZip(List<string> allFiles, ZipOutputStream ZipStream)
{
Crc32 crc = new Crc32();//新建Checksums的Crc32类对象
{
//打开要压缩的文件
FileStream fs = File.OpenRead(file);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
//获取压缩文件的相对路径
string files = file.Substring(file.LastIndexOf("\\") + 2);
ZipEntry entry = new ZipEntry(files);
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
ZipStream.PutNextEntry(entry);
ZipStream.Write(buffer, 0, buffer.Length);
}
return ZipStream;
}