C# 压缩一个文件夹

using System;

using System.Collections.Generic;

using System.IO;

using System.Text;

using ICSharpCode.SharpZipLib.Checksum;

using ICSharpCode.SharpZipLib.Zip;

namespace learun.util

{

public class ZipFloClass

{

public static void ZipFile(string strFile, string strZip)

{

if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)

strFile += Path.DirectorySeparatorChar;

ZipOutputStream s = new ZipOutputStream(File.Create(strZip));

s.SetLevel(6); // 0 - store only to 9 - means best compression

zip(strFile, s, strFile);

s.Finish();

s.Close();

}

private static void zip(string strFile, ZipOutputStream s, string staticFile)

{

if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;

Crc32 crc = new Crc32();

string[] filenames = Directory.GetFileSystemEntries(strFile);

foreach (string file in filenames)

{

if (Directory.Exists(file))

{

zip(file, s, staticFile);

}

else // 否则直接压缩文件

{

//打开压缩文件

FileStream fs = File.OpenRead(file);

byte[] buffer = new byte[fs.Length];

fs.Read(buffer, 0, buffer.Length);

string tempfile = file.Substring(staticFile.LastIndexOf("\\") + 1);

ZipEntry entry = new ZipEntry(tempfile);

entry.DateTime = DateTime.Now;

entry.Size = fs.Length;

fs.Close();

crc.Reset();

crc.Update(buffer);

entry.Crc = crc.Value;

s.PutNextEntry(entry);

s.Write(buffer, 0, buffer.Length);

}

}

}

}

}

调用方法

string[] FileProperties = new string[2];

FileProperties[0] = filePath;//待压缩文件目录

FileProperties[1] = filePath + ".zip"; //压缩后的目标文件

ZipFloClass.ZipFile(FileProperties[0], FileProperties[1]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值